对数组进行两次排序

时间:2015-10-16 15:26:07

标签: javascript arrays sorting

我有以下数组:

var array = [{
    "name": "Item 1",
    "LineNumber": "10",
    "size": "5"
    },
    {
    "name": "Item 2",
    "LineNumber": "30",
    "size": "5"
    },
    {
    "name": "Item 3",
    "LineNumber": "30",
    "size": "4"
    },
    {
    "name": "Item 4",
    "LineNumber": "20",
    "size": "5"
    }]

使用以下内容,我可以按行号排序:

      array.sort(function(a, b) {
        return a.LineNumber - b.LineNumber;
      });

在某些拥有大量数据的情况下,我遇到了一个问题,即项目将共享相同的行号,但它们的大小将不同(即第2项和第3项)。我想首先按行号排序,然后根据返回的第一个排序方式按大小排序。是否有可能在一种比较函数中实现这一目标?

2 个答案:

答案 0 :(得分:7)

试试这个:

array.sort(function(a, b) {
  if (a.LineNumber == b.LineNumber)
    return a.size - b.size;
  return a.LineNumber - b.LineNumber;
});

答案 1 :(得分:0)

您只需要为sort函数添加更多逻辑。

  array.sort(function(a, b) {
    if (a.LineNumber === b.LineNumber) {
         return a.size - b.size;
    }
    return a.LineNumber - b.LineNumber;
  });