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

Javascript 如何按字母顺序和长度对数组进行排序,javascript,arrays,typescript,sorting,Javascript,Arrays,Typescript,Sorting,假设我有这个array:['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); 但这是不对的。如何修复它?您可以检查一个字符串是否以另一个字符串开头,并将长

假设我有这个array:['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数组=['a','c','bb','aaa','bbb','aa'];
array.sort((a,b)=>{
设d=a.startsWith(b)| | b.startsWith(a)
?b.长度-a.长度
: 0;
返回d|a.localeCompare(b);
});

console.log(数组)您可以检查一个字符串是否以另一个字符串开头,并将长度的增量作为返回值

var数组=['a','c','bb','aaa','bbb','aa'];
array.sort((a,b)=>{
设d=a.startsWith(b)| | b.startsWith(a)
?b.长度-a.长度
: 0;
返回d|a.localeCompare(b);
});


console.log(数组)在第一次排序后,是否按长度添加另一个排序
.sort((a,b)=>b.length-a.length):)这能回答你的问题吗@Halilčakar,它将仅按每个字符串的长度对数组进行排序。
sort
对数组进行变异。所以,没有必要重新分配:
this.array=this.array.sort(…)
@adiga right是的,我真的没想到它在第一次排序之后,再按长度添加一次排序
.sort((a,b)=>b.length-a.length):)这能回答你的问题吗@Halilčakar,它将仅按每个字符串的长度对数组进行排序。
sort
对数组进行变异。因此,没有必要重新分配:
this.array=this.array.sort(…)
@adiga right是的,我真的没有想到它,我不知道默认情况下我的数组中是否有字符“a”或“b”。这只是一个例子。。这是一个动态的阵列,请尝试动态内容。奇怪。。它说我a.startsWith不是一个函数。我还显式表示a:string,b:string@travis_91您可以使用方括号表示法
arr.sort((a,b)=>a[0]==b[0]?b.length-a.length:a.localeCompare(b))
您可以使用a,因为默认情况下,我不知道数组中是否有字符“a”或“b”。这只是一个例子。。这是一个动态的阵列,请尝试动态内容。奇怪。。它说我a.startsWith不是一个函数。我还显式表示a:string,b:string@travis_91您可以使用方括号表示法
arr.sort((a,b)=>a[0]==b[0]?b.length-a.length:a.localeCompare(b))
您可以将a作为