繁体   English   中英

如何按字母顺序和长度对数组进行排序

[英]How can I sort an array alphabetticaly and by length

假设我有这个数组:['a', 'c', 'bb', 'aaa', 'bbb', 'aa']。 我想以这种方式对其进行排序:

aaa,aa,a,bbb,bb,c。

this.array= this.array.sort((n1, n2) => n1.localeCompare(n2));
this.array= this.array.sort((n1, n2) => n2.length - n1.length);

但这是不对的。 我该如何解决?

您可以检查一个字符串是否以另一个字符串开头并将长度的增量作为返回值。

 var array = ['a', 'c', 'bb', 'aaa', 'bbb', 'aa']; array.sort((a, b) => { let d = a.startsWith(b) || b.startsWith(a)? b.length - a.length: 0; return d || a.localeCompare(b); }); console.log(array);

没有String#startsWith

 var array = ['a', 'c', 'bb', 'aaa', 'bbb', 'aa']; array.sort((a, b) => { let min = Math.min(a.length, b.length), d = a.slice(0, min) === b.slice(0, min)? b.length - a.length: 0; return d || a.localeCompare(b); }); console.log(array);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM