在python中有sort,sorted這兩種方法可以使用,不過在JS中僅有sort()一種,而且使用上稍微麻煩一些,我們看一下實例便知道。
let arr = [1,74,5,8,14]
console.log(arr.sort())
光看以上程式碼,直覺上的預期輸出應該會是 [1,5,8,14,74]
但實際在node.js跑過後你會發現輸出結果為[ 1, 14, 5, 74, 8 ]
原因其實很單純,就是電腦看數字的方式與我們不同,有許多參考文章可以看 這邊就不贅述。那如果我想要按數字大小排列呢?這時候我們需要在sort()內補上一個函數。
arr = arr.sort(function (a, b) {
return a > b ? 1 : -1;
});
console.log(arr)//[ 1, 5, 8, 14, 74 ]
簡單說明一下發生了什麼事情,在一個匿名函數中有a,b兩個參數,每一次都會將a b做一次比較,若 a > b 則回傳 1,反之回傳 -1。 sort()在接收到正的回傳值的時候會將a的次序排在b之前,反之則b排在a之前。有點類似泡沫排序的處理方式~挺有趣的吧