逻辑有点麻烦 下图红色方框处是 数值
蓝色方框处是序号
如果传值过来是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));
{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));追问
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);
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);
你应该一次问清楚的
追问可能是我还是没有描述的很清楚
在不改变顺序的情况下 只改那个值
我这个运行结果应该就是你上面的两张图片吧 子数组第一个元素不变化是吧