3

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

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

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

我在该站点上搜索了多维排序,并找到了像这样的线程,其中排序功能被修改如下:

location.sort(function(a,b) {

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

});

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

4

3 回答 3

5

只需比较数组值 -

var myarray =  [[1,2],[2,3],[5,6],[8,9]];

myarray.sort(function(a,b) { return a[0] - b[0]; });
于 2013-08-01T14:50:46.663 回答
2

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

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

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

location.sort(function(a, b){
    return b[0] - a[0];
});
于 2013-08-01T14:50:33.553 回答
1

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

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
于 2013-08-01T14:51:45.723 回答