我發現使用沒有比較函數的排序會導致錯誤的答案,我不知道原因。Javascript Array.prototype.sort()錯誤,沒有比較功能
var a = [823564440,115438165,784484492,74243042,114807987,137522503,441282327,16531729,823378840,143542612]
a.sort()
a.sort((a,b) => a-b)
這兩個應該在我的腦海中給出相同的結果,但他們沒有。顯然後者是正確的。
a.sort()
[114807987, 115438165, 137522503, 143542612, 16531729, 441282327, 74243042, 784484492, 823378840, 823564440]
a.sort((a, b) => a-b)
[16531729, 74243042, 114807987, 115438165, 137522503, 143542612, 441282327, 784484492, 823378840, 823564440]
有誰能告訴我背後的原因嗎?
從[documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort):*默認的排序順序是根據字符串的Unicode代碼點。* – Li357
首先將項目比作字符串。 – zerkms
字符串排序與數字排序。 –