如果数组超过10个项,则Javascript将按子数组中的值对数组进行排序

如果数组超过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应该位于阵列的中间,

我有一个带有子数组的数组,希望按子数组中的第一项进行数字排序

使用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应该位于阵列的中间,而不是顶部


知道为什么会这样吗?谢谢。

传递给排序的函数应该返回一个数字,如果第一个值大于第二个值,则返回正数;如果它们相等,则返回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)。对于从最大到最小的顺序,请尝试以下方法: