Javascript 对多个数字数组进行排序
我有一个包含多个数字数组的数组,我只想对它们进行排序 例如:Javascript 对多个数字数组进行排序,javascript,arrays,sorting,multidimensional-array,Javascript,Arrays,Sorting,Multidimensional Array,我有一个包含多个数字数组的数组,我只想对它们进行排序 例如: my_parent_array = [ [2, 6, 31], [2, 3, 25], [2, 6, 17, 2] ]; 它们都是正整数,每个子数组可以有许多值 我需要排序/排序我的父数组才能排序 在上面的例子中,结果应该是这样的: my_parent_array = [ [2, 3, 25], [2, 6,
my_parent_array = [ [2, 6, 31],
[2, 3, 25],
[2, 6, 17, 2] ];
它们都是正整数,每个子数组可以有许多值
我需要排序/排序我的父数组才能排序
在上面的例子中,结果应该是这样的:
my_parent_array = [ [2, 3, 25],
[2, 6, 17, 2],
[2, 6, 31] ];
我该怎么做
谢谢
编辑
此数组仅包含数字(不包含字符串或字母)。
我需要它先按第一个值排序子数组,然后按第二个值排序,以此类推。
这类似于按字母顺序排序,但这是使用数字数组而不是字母字符串
我假设.sort()
不会起作用,因为我正在处理子数组。
正如@amadan指出的,简单的.sort()
不起作用,因为如果我使用标准的.sort()
,默认情况下,10
会出现在2
之前
那么,是否有一个排序修饰符来实现这一点,或者我是否需要制作自己的排序算法
谢谢。为了避免我在评论中发布的问题(默认情况下按字典排序),请介绍您自己的comparator函数:
my_parent_array.sort(function(a, b) {
var len = Math.min(a.length, b.length);
for (var i = 0; i < len; i++) {
if (a[i] < b[i]) return -1;
if (a[i] > b[i]) return 1;
}
return a.length - b.length;
});
my\u parent\u array.sort(函数(a,b){
var len=数学最小值(a.长度,b.长度);
对于(变量i=0;ib[i])返回1;
}
返回a.length-b.length;
});
编辑:我一直在想角落里的案子…
编辑:我认为现在应该解决这些棘手的问题。,你尝试过什么?实际上,这和我的父母\u array.sort()一样简单。
->@adeneo:不,在这种特殊情况下是这样,但通常不是这样。试试这个:a=[[2]、[1]、[10];a、 sort()
-它给出了[[1]、[10]、[2]]
,因为数字是按字典进行比较的。OP的例子并不重要。可能重复@Mathemats:不是一般的解决方案,因为它只对第一个元素进行排序。什么是“角落案例”?失败的例子;希望没有保留,但是编辑历史将显示大量重写和调试迭代。当我最终确定最终版本时,我可能应该编辑掉这句话,但我忘了(现在有评论提到这句话,我可能不应该)。