Skip to content

JS 陣列排序的新方法 - toSorted()

Posted on:2023/06/08 20:30:00

前言

近期看到 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 還不支援這個方法,所以要看情況使用。

參考資料