我有一個集合對象數組,如何在Javascript中對數組中的對象進行排序?
[{A:2, B:2},{A:2, B:3},{A:1, B: 2}, {A:1, B:1}]
我想有屬性的一個排序結果,然後屬性B.因此,其結果應該是:
[{A:1, B:1}, {A:1, B:2}, {A:2, B:2}, {A:2, B:3}]
我有一個集合對象數組,如何在Javascript中對數組中的對象進行排序?
[{A:2, B:2},{A:2, B:3},{A:1, B: 2}, {A:1, B:1}]
我想有屬性的一個排序結果,然後屬性B.因此,其結果應該是:
[{A:1, B:1}, {A:1, B:2}, {A:2, B:2}, {A:2, B:3}]
排序由A然後由B.這種排序工作,因爲如果A == A
然後A - A
是0
。而0 || anything
始終是anything
。因此,它比較A
則不同,以B
是A's are equal.
var list = [{A:2, B:2},{A:2, B:3},{A:1, B: 2}, {A:1, B:1}];
list.sort(function (a, b) {
return a.A - b.A || a.B - b.B
})
使用完全的跨瀏覽器sort和懶惰評估
您可以使用自定義排序回調,首先比較的A值,然後的好處,如果這些都等於使用B值,從而產生用於排序主要和次要鍵:
var collection = [{A:2, B:2},{A:2, B:3},{A:1, B: 2}, {A:1, B:1}];
collection.sort(function(a, b){
if (a.A != b.A) {
return(a.A - b.a);
} else {
return(a.B - b.B);
}
});
嘗試下面的代碼
[{A:2, B:2},{A:2, B:3},{A:1, B: 2}, {A:1, B:1}]
.sort(function(a, b) { return (a.A< b.A) ? -1 : (a.A> b.A) ? 1 : 0 })
.sort(function(a, b) { return (a.B< b.B) ? -1 : (a.B> b.B) ? 1 : 0 });
可能重複[如何排序JSON數組?](http://stackoverflow.com/questions/979256/how-to-sort-a-json-array) – luvieere