Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
排序多维数组javascript_Javascript_Sorting - Fatal编程技术网

排序多维数组javascript

排序多维数组javascript,javascript,sorting,Javascript,Sorting,我想对多维数组中的double进行排序 数组如下所示:[[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); }); 但是,我

我想对多维数组中的double进行排序

数组如下所示:[[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);

});

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

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

location.sort(function(a, b){
    return a[0] - b[0];
});
请注意,您提供的数组已按每个数组中的第一个值排序。如果要按降序排序,可以执行以下操作:

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

只需比较数组值-

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

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

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

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()
起作用。这怎么不是一个解决方案呢?一些noob会读到这一点,错过关于单个数字的部分(不理解这种排序,默认情况下,是字符串比较,这就是为什么它有效的原因),最后问了另一个可以通过阅读轻松回答的问题。@Mathletics我已经试着让它更明显-但是我觉得它值得保留在那里,因为它更易于阅读,管理的代码更少(在可能安全使用的情况下)。谢谢,我想这是非常明显的!