--- tags: DSA in JavaScript --- # Ch.11-1 Sorting in JS 在 JS 的陣列中,有一個內建的 sort 方法 ```javascript= const arr = [2, 71, 43, 10, 32] arr.sort() // [10, 2, 32, 43, 71] ``` 如果是字串的陣列就表現正常 ```javascript= const strArr = ['banana', 'yee', 'baa', 'apple'] strArr.sort() // [ "apple", "baa", "banana", "yee" ] ``` 這是因為 sort 在沒有特別指定方法時,會將元素先轉為字串後,使用 Unicode code point 排序,因此在數字上就會呈現這個奇怪的狀況 要改善這個狀況,可以把 comparator function 代入 sort 的參數內: ```javascript= // 同上一個 arr arr.sort((prev, aftr) => prev - aftr) ``` 在 comparator function 中 - 若函式回傳值大於 0,就將 prev 放在 aftr 後面 - 若回傳值小於 0,將 aftr 放在 prev 前面 - 回傳值為 0 則不變