gpt4 book ai didi

javascript - 在 Javascript 中对数字数组进行排序

转载 作者:行者123 更新时间:2023-11-28 17:58:01 26 4
gpt4 key购买 nike

我有一个由四个数字数组组成的数组arr,例如:

arr = [
[4, 1, 3, 2, 0],
[4, 2, 1, 3, 0],
[0, 2, 3, 1, 4],
[0, 3, 1, 2, 4]
]

我需要对其进行排序以获得:

arr = [
[0, 2, 3, 1, 4],
[0, 3, 1, 2, 4]
[4, 1, 3, 2, 0],
[4, 2, 1, 3, 0],
]

数字数组可以更大,但四个数组的大小始终相同。有时需要比较数字数组的第一个和第二个以上的元素以获得较小的值。我在这个answer中找到了下面的代码,但仅限于前两个数字数组元素。

myArray=myArray.sort(function(a,b){
retVal=0;
if(a[0]!=b[0]) retVal=a[0]>b[0]?1:-1;
else if(a[1]!=b[1]) retVal=a[1]>b[1]?1:-1;
else if(a[2]!=b[2]) retVal=a[2]>b[2]?1:-1;
return retVal
});

编辑

在输出中,元素 arr[0][0]arr[1][0] 相等且小于元素 arr[ 2][0]arr[3][0]。在第二级中,元素arr[0][1]小于arr[1][1]。在某些情况下,有很多级别,我无法预测有多少。

我该如何实现它?

最佳答案

迭代数组,直到找到不匹配的元素并返回第一个不匹配的差异

var arr = [
[4, 1, 3, 2, 0],
[4, 2, 1, 3, 0],
[0, 2, 3, 1, 4],
[0, 3, 1, 2, 4]
]


arr.sort(function(a,b){
for(var i=0; i< a.length; i++){
// if they don't match, return difference
if(a[i] !== b[i]){
return a[i] - b[i];
}
}
// if we get this far they are the same
return 0;
})

console.log(JSON.stringify(arr))

关于javascript - 在 Javascript 中对数字数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44097190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com