【问题标题】:Sort both values in a multidimensional在多维中对两个值进行排序
【发布时间】:2014-06-06 08:18:58
【问题描述】:

我正在研究一些对多维数组非常有用的功能。我想做的是按第一个值排序,然后按第二个值排序,同时保持第一个值排序。见例子:

arrayToSort = [[1,5],[1,3],[1,2],[1,6],[2,6],[1,9],[1,11]];

I would like to sort this so it returns

[[1,2],[1,3],[1,5],[1,6],[1,9],[1,11],[2,6]];

我创建了*一个函数,使用下面的函数按第一个值对数组进行排序,但我不确定我如何能实现上述目标。

function sortOne(cards){
    arr = cards.sort(function(a,b) {
        return a[0] > b[0];
    });
    return arr;
}

*来源:How to sort 2 dimensional array by column value?

【问题讨论】:

  • 请注意,您当前的比较函数非常不一致,它永远不会返回负值。
  • @Bergi 我的数组永远不会包含负值,所以这很好。
  • @GlenRobson:不,这与价值观无关。如果a 小于b,则比较必须返回负值(-1)。检查the docs
  • @Bergi 我没有编写此代码,您可能希望与编写此代码的人一起讨论:stackoverflow.com/a/16096900/1531541
  • @GlenRobson 在您写的问题中“我已经创建了一个对数组进行排序的函数”,并且一旦出现缺陷,您就可以“归功于”您的“来源”。 TT

标签: javascript arrays sorting multidimensional-array


【解决方案1】:

按第一个值排序,然后按第二个:

data.sort(function(a, b) {
    return a[0]-b[0] || a[1]-b[1];
});

这只是两个 (standard number) 比较,由 || 运算符链接,当第一个是 0 时返回正确的操作数。

请参阅here 了解处理任意长度数组的通用比较函数,而不仅仅是元组。

【讨论】:

  • @naota +1 像魅力一样工作!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多