var arr = [];
arr.push(row1);
arr.push(row2);
...
arr.push(rown);
Cách sắp xếp theo row['key']
?Làm thế nào để sắp xếp mảng trong javascript?
var arr = [];
arr.push(row1);
arr.push(row2);
...
arr.push(rown);
Cách sắp xếp theo row['key']
?Làm thế nào để sắp xếp mảng trong javascript?
Mảng JavaScript có phương thức được xây dựng trong sort()
. Trong trường hợp này, một số thông tin như sau sẽ hoạt động:
arr.sort(function(row1, row2) {
var k1 = row1["key"], k2 = row2["key"];
return (k1 > k2) ? 1 : ((k2 > k1) ? -1 : 0);
});
Bạn gọi hàm sắp xếp của một mảng với bộ so sánh của bạn. Một so sánh JavaScript chỉ là một hàm trả về -1, 0, hoặc 1 tùy thuộc vào việc a nhỏ hơn b, a bằng b, hoặc a lớn hơn b:
myarray.sort(function(a,b){
if(a < b){
return -1;
} else if(a == b){
return 0;
} else { // a > b
return 1;
}
});
Đây chỉ là một ví dụ , chức năng của bạn có thể căn cứ so sánh trên bất cứ điều gì bạn muốn, nhưng nó cần phải trả về -1,0,1.
Hy vọng điều này sẽ hữu ích.
Xét đoạn mã sau:
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);
Bây giờ chỉ cần thay đổi một chức năng sortBySecondField
để so sánh a['key']
thay vì a[1]
và làm tương tự cho b
.
Đây là tập hợp các hàm nếu bạn muốn sắp xếp tăng dần, giảm dần hoặc sắp xếp trên nhiều cột trong một mảng.
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)]);
});
Để có được một sắp xếp tăng dần, sử dụng "CMP (...)", và để có được một loại giảm dần, sử dụng "-cmp (...)"
Và để sắp xếp trên nhiều cột , so sánh hai mảng cmp (...)