2017-09-11 61 views
0

我有一個問題關於JavaScript的sort()函數JavaScript數組排序函數不正確排序

var arr = [23,43,54,2,3,12]; 
arr.sort(); 

它的輸出爲[12, 2, 23, 3, 43, 54] 以及它應該是[2, 3, 12, 23, 43, 54]

+0

https://stackoverflow.com/questions/1063007/how-to-sort-an-array-of-integers-correctly – aahhaa

+2

的可能的複製[如何正確排序整數數組( https://stackoverflow.com/questions/1063007/how-to-sort-an-array-of-integers-correctly) – Brian

+1

它排序時的第一個數字,因爲你的值代表字符串 – pokeybit

回答

2

這是因爲您正在使用默認排序算法對數字進行排序,這會將其轉換爲字符串並按字典順序進行排序。

而是通過一個函數來定義一個排序順序,通過它的返回值。

var arr = [23,43,54,2,3,12]; 
 

 
console.log(arr.sort((a, b) => a - b));

返回一個正數朝向列表的末尾移動a

+0

這真的很有幫助。謝謝 !!! –

2

你必須指定排序功能

[12, 2, 23, 3, 43, 54].sort(function (a, b) { return a - b ; }) 

的JavaScript規範規定的排序應該執行lexicografic排序,docs

+0

你不應該返回一個布爾值。分揀機需要一個數字返回值。在某些情況下返回一個布爾值可能會導致錯誤的結果。 – spanky

+0

@spanky你是對的,改爲解決這個反饋, –