如果数组超过10个项,则Javascript将按子数组中的值对数组进行排序
我有一个带有子数组的数组,希望按子数组中的第一项进行数字排序 使用sort()函数:如果数组超过10个项,则Javascript将按子数组中的值对数组进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个带有子数组的数组,希望按子数组中的第一项进行数字排序 使用sort()函数: arr = [[2,'text'],[5,'text'],[1,'text'],[3,'text'],[6,'text'],[4,'text'], [7,'text'],[9,'text'],[3,'text'],[1,'text'],[8,'text']]; arr.sort(function(a, b) { return a[0] < b[0]; }); 4应该位于阵列的中间,
arr = [[2,'text'],[5,'text'],[1,'text'],[3,'text'],[6,'text'],[4,'text'],
[7,'text'],[9,'text'],[3,'text'],[1,'text'],[8,'text']];
arr.sort(function(a, b) {
return a[0] < b[0];
});
4应该位于阵列的中间,而不是顶部
知道为什么会这样吗?谢谢。传递给排序的函数应该返回一个数字,如果第一个值大于第二个值,则返回正数;如果它们相等,则返回0;如果小于,则返回负数。这样做可以:
arr.sort(function(a, b) {
return b[0] - a[0];
});
arr.sort(function(a, b) {
return b[0] - a[0];
});
或者更简单地说,在现代JS中:
arr.sort((a, b) => b[0] - a[0])
传递给
sort
的函数应该返回一个数字,如果第一个值大于第二个值,则返回正值;如果它们相等,则返回0;如果小于,则返回负值。这样做可以:
arr.sort(function(a, b) {
return b[0] - a[0];
});
arr.sort(function(a, b) {
return b[0] - a[0];
});
或者更简单地说,在现代JS中:
arr.sort((a, b) => b[0] - a[0])
当前代码返回一个布尔值。相反,函数应该返回一个数字,如果a
位于b
之前,则该数字应小于零;如果b
位于a
之前,则该数字应大于零(如果没有更改,则返回0)。对于从最大到最小的顺序,请尝试以下方法:
当前代码返回一个布尔值。相反,函数应该返回一个数字,如果a
位于b
之前,则该数字应小于零;如果b
位于a
之前,则该数字应大于零(如果没有更改,则返回0)。对于从最大到最小的顺序,请尝试以下方法: