Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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,我试图对两个子索引上的xy坐标进行排序,一次表示行-列Asc顺序。我已经通过Y对坐标数据进行了排序,但是当我再次通过X对数据进行排序时,我就失去了Y顺序,所以知道怎么做吗 我所做的 示例:我的原始坐标xy数据 var cxray = [ [450,13],[455,12],[454,12],[451,12],[452,13],[453,12], [450,12],[453,13],[454,13],[450,13],[452,12],[455,13],]; 我的单索引排序函数 this.ra

我试图对两个子索引上的xy坐标进行排序,一次表示行-列Asc顺序。我已经通过Y对坐标数据进行了排序,但是当我再次通过X对数据进行排序时,我就失去了Y顺序,所以知道怎么做吗

我所做的

示例:我的原始坐标xy数据

var cxray = [ [450,13],[455,12],[454,12],[451,12],[452,13],[453,12], [450,12],[453,13],[454,13],[450,13],[452,12],[455,13],];
我的单索引排序函数

 this.ray_isort = function(data,i){
    data.sort( function( a, b ,sindex=i){if ( parseFloat(a[sindex]) == parseFloat(b[sindex]) ) return 0;return parseFloat(a[sindex]) < parseFloat(b[sindex]) ? -1 : 1;});
    return data;
  };
我的目标是

0  450,12
1  451,12
2  452,12
3  453,12
4  454,12
5  455,12
6  450,13
7  451,13
8  452,13
9  453,13
10  454,13
11  455,13

a[1]-b[1]
将使用每个数组的第二项对数组进行排序

如果它们相等,结果将是
0
,因此将执行
a[0]-b[0]
部分,并使用第一个项对数组进行排序

const cxray=[450,13]、[455,12]、[454,12]、[451,12]、[452,13]、[453,12]、[450,12]、[453,13]、[454,13]、[450,13]、[452,12]、[455,13];

console.log(cxray.sort((a,b)=>a[1]-b[1]| | a[0]-b[0])
a[1]-b[1]
将使用每个数组的第二项对数组进行排序

如果它们相等,结果将是
0
,因此将执行
a[0]-b[0]
部分,并使用第一个项对数组进行排序

const cxray=[450,13]、[455,12]、[454,12]、[451,12]、[452,13]、[453,12]、[450,12]、[453,13]、[454,13]、[450,13]、[452,12]、[455,13];
console.log(cxray.sort((a,b)=>a[1]-b[1]| | a[0]-b[0])
只需先按y排序。如果ay等于by,ay by将为0,因此多亏了or运算符,它将在x之后排序


只需先按y排序。如果ay等于by,那么ay by将是0,因此由于or运算符的作用,它将在x之后进行排序。

array.sort((a,b)=>a[0]-b[0]-a[1]-b[1])
array.sort((a,b)=>a[0]-b[0]-a[1]-b[1])
请在回答读者问题时添加解释,而不仅仅是OP请在回答读者问题时添加解释,而不仅仅是OP
0  450,12
1  451,12
2  452,12
3  453,12
4  454,12
5  455,12
6  450,13
7  451,13
8  452,13
9  453,13
10  454,13
11  455,13
cxray.sort(([ax,ay],[bx,by])=>ay-by||ax-bx);