前言
近期看到 javascript 有了新的陣列排序方式,相較原本的 sort()
,在執行後會改變原本的陣列,所以要保留原本陣列需要做額外處理
const arr = [1, 3, 2, 5, 4];
arr.sort((a, b) => {
return a - b;
});
console.log(arr); // [1,2,3,4,5]
如果要保留原本的 [1,3,2,5,4] 陣列,就要先複製一份再做排序
const arr = [1, 3, 2, 5, 4];
const arrCopy = [...arr];
arrCopy.sort((a, b) => {
return a - b;
});
console.log(arrCopy); // [1,2,3,4,5]
而新提供的 toSorted()
可以直接回傳一個排序後的陣列,不會改變原本的陣列
const arr = [1, 3, 2, 5, 4];
const arrCopy = arr.toSorted((a, b) => {
return a - b;
});
console.log(arr); // [1,3,2,5,4]
console.log(arrCopy); // [1,2,3,4,5]
在開發上也較為方便一些,可以少做一次的複製動作,但要注意的是目前 Firefox
還不支援這個方法,所以要看情況使用。