如何在JavaScript中对此数组进行排序?

时间:2009-12-22 20:00:25

标签: javascript arrays sorting object

如何对此数组进行排序?

[
  {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}
}]

3 个答案:

答案 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];