如何对此数组进行排序?
[
{id : 1, start : 60, end : 120},
{id : 2, start : 100, end : 240},
{id : 3, start : 700, end : 720}
]
更新: 因此,如果我的数组看起来像这样,我可以根据起始值对其进行排序吗?
[{
1:{start : 60, end : 120},
2:{start : 100, end : 240},
3:{start : 700, end : 720}
}]
答案 0 :(得分:17)
你所拥有的是一系列物体。您必须指定要对其进行排序的方式。
无论如何,您可以使用sort
方法:
var data = [{id : 1, start : 60, end : 120}, {id : 2, start : 100, end : 240},{id : 3, start : 700, end : 720}];
function sortByStart(a, b){
return a.start - b.start;
}
data.sort(sortByStart);
答案 1 :(得分:1)
您可能想要一种方法来对可能的对象进行排序 具有相同的起始值:
[
{id : 1, start : 60, end : 120},
{id : 2, start : 100, end : 240},
{id : 3, start : 700, end : 720}
]
A.sort(function(a, b){
return a.start-b.start || a.end-b.end || a.id-b.id;
});
答案 2 :(得分:0)
实际上现在你有一个伪数组对象的数组。但是你可以将该对象转换为真实数组,对其进行排序,然后转换回来:
var originalArray = [{
1:{start : 60, end : 120},
2:{start : 700, end : 720},
3:{start : 100, end : 240}
}];
var pseudoArray = originalArray[0];
var arrayToSort = [];
for (var key in pseudoArray) {
arrayToSort.push(pseudoArray[key]);
}
arrayToSort.sort(function(left, right) {
return left.start - right.start || left.end - right.end;
});
var resultPseudoArray = {};
for (var i = 0; i < arrayToSort.length; i++) {
resultPseudoArray[i + 1] = arrayToSort[i];
}
var resultArray = [resultPseudoArray];