我有这个数组数组。我希望它按数组的长度排序。
我使用 array.sort( (a, b) => a.length > b.length) );
[
[],
[ 2, 2, 2, 2, 2 ],
[],
[],
[ 5 ],
[ 3, 3, 3, 3 ],
[],
[],
[ 1 ],
[ 2, 2 ],
[ 1 ],
[],
[ 4 ],
[ 3 ],
[ 1, 1 ],
[],
[ 5, 5 ],
[],
[],
[ 4, 4, 4, 4, 4, 4 ],
[],
[ 3 ],
[ 5 ],
[],
[ 5 ],
[ 1, 1 ],
[],
[ 3 ],
[],
[],
[],
[],
[ 4 ],
[ 1 ],
[ 4, 4, 4, 4 ],
[],
[ 5, 5, 5, 5 ],
[],
[],
[ 3 ],
[ 5 ],
[ 2 ],
[],
[],
[ 2 ],
[],
[],
[ 1, 1, 1 ],
[],
[ 4 ],
[ 3, 3, 3 ],
[],
[],
[ 1, 1 ],
[],
[ 4, 4 ],
[ 2, 2, 2 ],
[],
[ 2 ],
[ 2 ],
[ 4 ],
[ 2 ],
[ 3 ],
[ 2 ],
[],
[],
[],
[ 5 ] ]
但毕竟排序返回这个。为什么长度为 6,里面有 4 个的数组放错了地方?
[
[],
[],
[],
[],
[ 5 ],
[ 2 ],
[],
[],
[ 1 ],
[ 3 ],
[ 1 ],
[],
[ 4 ],
[ 3 ],
[ 2 ],
[],
[ 4 ],
[],
[],
[ 2 ],
[],
[ 3 ],
[ 5 ],
[],
[ 5 ],
[ 2 ],
[],
[ 2 ],
[],
[],
[],
[],
[ 4 ],
[ 1 ],
[],
[],
[],
[],
[],
[ 3 ],
[ 5 ],
[ 2 ],
[],
[],
[ 2 ],
[],
[],
[],
[],
[ 4 ],
[],
[ 4, 4, 4, 4, 4, 4 ],
[ 5 ],
[ 5, 5 ],
[ 1, 1 ],
[ 4, 4 ],
[ 3, 3 ],
[ 3, 3 ],
[ 1, 1 ],
[ 2, 2 ],
[ 1, 1 ],
[ 1, 1, 1 ],
[ 2, 2, 2 ],
[ 3, 3, 3 ],
[ 5, 5, 5, 5 ],
[ 3, 3, 3, 3 ],
[ 4, 4, 4, 4 ],
[ 2, 2, 2, 2, 2 ] ]
这有什么问题吗?
最佳答案
要做排序函数,你必须提供最大值,最小值等于(+1(实际上>0),-1(实际上<0),0(等于)),更快的方法是将结果相减:
arr.sort(function(a, b){
// ASC -> a.length - b.length
// DESC -> b.length - a.length
return a.length - b.length ;
});
关于JavaScript 数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44119500/