JavaScript 数组的数组

标签 javascript arrays

我有这个数组数组。我希望它按数组的长度排序。 我使用 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/

相关文章:

javascript - 如何合并对象数组中的重复项并对特定属性求和?

sql - 使用 Postgres 在 json 数组中索引对象元素

arrays - Swift - 将 url 内容排序到数组中

javascript - 页面加载时从 Iframe 中移除焦点

JavaScript history.back() 有条件地

javascript - 如何修复出现在 materializecss 自动完成中的这个空白列表?(Internet Explorer)

javascript - d3.js - 时间尺度上均匀分布的条形

ios - Swift:创建具有空字段的可变数组

java - 将二维数组存储到文件中

java - 将字符串附加到数组