【问题标题】:Sorting an array twice [duplicate]对数组进行两次排序[重复]
【发布时间】:2016-01-15 10:09:18
【问题描述】:

我有以下数组:

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)。我想先按行号排序,然后根据第一次排序的返回方式按大小排序。是否有可能在一种比较功能中实现这一点?

【问题讨论】:

  • 进行第一次比较,如果它们相等则回退到第二次比较测试并返回。

标签: javascript arrays sorting


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:

    您只需要在排序函数中添加更多逻辑即可。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多