---
# System prepended metadata

title: Ch.11-1 Sorting in JS
tags: [DSA in JavaScript]

---

---
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 則不變