var arr = [];
arr.push(row1);
arr.push(row2);
...
arr.push(rown);
如何按row['key']
排序?
答案 0 :(得分:11)
JavaScript数组有一个内置的sort()
方法。在这种情况下,类似下面的内容将起作用:
arr.sort( function(row1, row2) {
var k1 = row1["key"], k2 = row2["key"];
return (k1 > k2) ? 1 : ( (k2 > k1) ? -1 : 0 );
} );
答案 1 :(得分:4)
使用比较器调用数组的sort函数。 JavaScript比较器只是一个返回-1,0或1的函数,具体取决于a是小于b,a是等于b还是a大于b:
myarray.sort(function(a,b){
if(a < b){
return -1;
} else if(a == b){
return 0;
} else { // a > b
return 1;
}
});
这只是一个例子,你的函数可以根据你的需要进行比较,但它需要返回-1,0,1。
希望这有帮助。
答案 2 :(得分:2)
如果要对数组中的多个列进行asending,descending或sort排序,可以使用以下函数集。
var cmp = function(x, y){ return x > y? 1 : x < y ? -1 : 0; },
arr = [{a:0,b:0},{a:2,b:1},{a:1,b:2},{a:2, b:2}];
// sort on column a ascending
arr.sort(function(x, y){
return cmp( cmp(x.a, y.a), cmp(y.a, x.a) );
});
// sort on column a descending
arr.sort(function(x, y){
return cmp( -cmp(x.a, y.a), -cmp(y.a, x.a) );
});
// sort on columns a ascending and b descending
arr.sort(function(x, y){
return cmp([cmp(x.a, y.a), -cmp(x.b, y.b)], [cmp(y.a, x.a), -cmp(y.b,x.b)]);
});
要获得升序排序,请使用“cmp(...)”,并获得降序排序,请使用“-cmp(...)”
要对多列进行排序,请比较两个cmp(...)
数组答案 3 :(得分:0)
请考虑以下代码:
var arr = new Array();
for(var i = 0; i < 10; ++i) {
var nestedArray = [ "test", Math.random() ];
arr.push(nestedArray);
}
function sortBySecondField(a, b) {
var aRandom = a[1];
var bRandom = b[1];
return ((aRandom < bRandom) ? -1 : ((aRandom > bRandom) ? 1 : 0));
}
arr.sort(sortBySecondField);
alert(arr);
现在只需更改sortBySecondField
功能即可比较a['key']
而不是a[1]
,并对b
执行相同操作。