【问题标题】:sort multidimensional array javascript排序多维数组javascript
【发布时间】:2013-08-02 13:39:51
【问题描述】:

我想对一个多维数组进行排序。

数组如下所示:[[1,2],[2,3],[5,6],[8,9]]

我想按 X 值对其进行排序,并保持 x,y 值成对。

我在网站上搜索了多维排序,发现像these 这样的线程,其中排序功能被修改如下:

location.sort(function(a,b) {

  // assuming distance is always a valid integer
  return parseInt(a.distance,10) - parseInt(b.distance,10);

});

但是,我不确定如何修改此功能以使其适合我。

【问题讨论】:

    标签: javascript sorting


    【解决方案1】:

    只需比较数组值 -

    var myarray =  [[1,2],[2,3],[5,6],[8,9]];
    
    myarray.sort(function(a,b) { return a[0] - b[0]; });
    

    【讨论】:

    • 谢谢,我想这很明显!
    【解决方案2】:

    您只需要比较a 和b 中您想要的部分。对于数字,您可以使用它们的差异:

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

    请注意,您已经提供的数组按每个数组中的第一个值排序。如果你想按降序排序,你可以这样做:

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

    【讨论】:

      【解决方案3】:

      实现这一点的最安全方法是按照您的问题进行操作,但使用数字键:

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

      如果偶然每个子数组的第一个元素总是一个数字:

      location.sort(); 
      //only works if first element in child arrays are single digit (0-9)
      //as in the example: [[1,2],[2,3],[5,6],[8,9]]
      //[[1,2],[22,3],[5,6],[8,9]] - will not work as 22 is not a single digit
      

      【讨论】:

      • 作为评论可能有用,但这个答案会让某些人感到困惑。
      • @Mathletics 这是一个答案 - 如果第一个元素 (x) 是单个数字 location.sort() 有效。这怎么不是解决方案?
      • 一些菜鸟会读到那个,错过了关于个位数的部分(不理解排序,默认情况下,是一个字符串比较,这就是为什么这样),最后问另一个问题阅读MDN即可轻松回答。
      • @Mathletics 我试图让它更明显 - 但我觉得值得保留,因为它更易于阅读且管理的代码更少(如果可以安全使用)
      猜你喜欢
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      相关资源
      最近更新 更多