2017-06-14 263 views

回答

3

您可以先按长度排序,然后用localeCompare()按字母顺序排序。

var array = ["a", "aaa", "bb", "bbb", "c"]; 
 
array.sort(function(a, b) { 
 
    return a.length - b.length || a.localeCompare(b) 
 
}) 
 

 
console.log(array)

+0

谢谢大家。这段代码完全适合我! –

+0

不客气。 –

+0

如何在PHP中执行此操作? – TricksfortheWeb

1

排序长度第一,然后按字母顺序使用||运营商有多个标准。然而,就你而言,简单的排序就可以做到。

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"]; 
 

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

 
console.log(array);

+0

只需要进行排序,就会更改源数组,因此您无需将其分配给新变量。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort?v=control –

+0

如果你不想改变原始数组,你可以先制作一个副本这个https://stackoverflow.com/questions/9592740/how-can-you-sort-an-array-without-mutating-the-original-array –

+0

@jasonSperske好习惯的习惯力量。 – Rick