如何按长度和字母顺序排序

14
假设我有以下JavaScript数组。如何按长度排序,然后按字母表顺序排序? 假设如下数组:
var array = ["a", "aaa", "bb", "bbb", "c"];

排序后应该产生:a,c,bb,aaa,bbb。预先感谢!

3个回答

12
您可以先按长度进行排序,然后使用localeCompare()按字母顺序进行排序。
var array = ["a", "aaa", "bb", "bbb", "c"];
array.sort(function(a, b) {
  return a.length - b.length || a.localeCompare(b)
})

console.log(array)


同样适用:return a.length === b.length ? a.localeCompare(b) : a.length - b.length - hb20007

8
首先按长度排序,然后使用“||”运算符按字母顺序排序以满足多个条件。不过,在您的情况下,只需要进行简单的排序即可。

var array = ["a", "aaa", "bb", "bbb", "c"];

array.sort(function(a, b) {
  return a.length - b.length || a.localeCompare(b);
});

console.log(array);

或者

var array =["c", "aa", "bb", "bbb", "b", "aaa", "a"].sort();

array.sort(function(a, b) {
  return a.length - b.length || 0;
});

console.log(array);


关于sort的提示,它会改变源数组,因此您不需要将其分配给新变量。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort?v=control - Jason Sperske
如果您不想更改原始数组,可以先进行复制,像这样https://dev59.com/w2kw5IYBdhLWcg3w2-XH - Jason Sperske

0
arr.sort((a, b) => a.length - b.length || this)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接