2016-10-26 48 views
0

我有一個包含以下數據的數組:排序JavaScript的數組與兩個字符串和數字到數字僅陣列和一個字符串只陣列

var arr = [30, "Chad", 400, 700, "Brian", "Zander", "allen", 43, 50]

我要排序此數組只包含數組數字(從最低到最高)和另一個只包含字符串的數組(按字母順序排列 - Allen中的「a」目前是小寫字母,但仍然應該在其他名字前面)。

我假設我會使用for循環與if/else語句結合,但不確定語法。任何幫助,將不勝感激。

回答

3

您可以使用filtersort函數。默認情況下,數組將按照strings進行排序。所以用numbers你需要明確地通過sorting function

.sort((a,b) => a - b); 

對於字符串,默認比較是好的。

var arr = [30, "Chad", 400, 700, "Brian", "Zander", "allen", 43, 50] 
 

 
var numbers = arr.filter(item => typeof item === 'number').sort((a,b) => a - b); 
 
var strings = arr.filter(item => typeof item === 'string').sort((a,b) => a.localeCompare(b)); 
 

 
console.log(numbers); 
 
console.log(strings);

+0

如果字符串名稱之一是什麼小寫?像「艾倫」而不是「艾倫」。建議? –

+0

@ My-name-is-mud默認情況下,'Uppercase'會出現在第一個 –

+0

@ My-name-is-mud,但你也可以爲'strings'傳遞一個函數並使用localeCompare函數 –