js数组排序

逻辑有点麻烦 下图红色方框处是 数值
蓝色方框处是序号

如果传值过来是2 需要修改其序号 使用值为2的 排序靠前

修改其序号靠前即可 ,不知道我画的这么抽象,问题描述清楚没有

var items = [
{key:1,val:'a'},
{key:2,val:'b'},
{key:4,val:'c'},
{key:2,val:'d'},
        {key:5,val:'e'}
    ];

function sortArray(items,keyNum){
return items.sort(function(a,b){
return (a.key == keyNum?0:a.key)>=(b.key == keyNum?0:b.key);
});
}

console.log(sortArray(items,2));

 主要还是使用js中array的sort函数,具体的sort函数讲解,可以参考下w3cschool

上面输出的结果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-06
var sort = function(arr,n){

var idx = 1;

arr.sort(function(a,b){

if(b[1]!=n) return -1;

return 1;

});

for(var i=0,len=arr.length;i<len;i++)
arr[i][0] = String(idx++);

return arr;

};

console.log(sort([[1,1,'a'],[2,2,'b'],[3,4,'c'],[4,2,'d'],[5,5,'e']],2));

追问

为何又是你

能不能写的通俗易懂一点

第2个回答  2015-05-07
var sort = function(arr , num){
var temp;
for(var i=0;i<arr.length;i++){
if(arr[i][1] == num){
temp = arr[i];
arr.splice(i,1);
arr.unshift(temp);
}
}
for(var i=0;i<arr.length;i++){
arr[i][0] = (i + 1).toString();
}
return arr;
}
sort(array,2);

 你应该一次问清楚的

追问

可能是我还是没有描述的很清楚

在不改变顺序的情况下 只改那个值

追答

我这个运行结果应该就是你上面的两张图片吧 子数组第一个元素不变化是吧

相似回答