最近發現幾個數組方法,是一些常規方法的升級版,比較有意思,分享給大家
文章目錄
- 一、溫故
- 二、知新
- `toReversed`
- `toSorted`
- `toSpliced`
一、溫故
- 我們先來回顧幾個比較常用的方法:
reverse
,sort
,splice
- 眾所周知,
reverse
:翻轉數組,sort
:數組排序,splice
:刪除指定位置的元素并可選的替換成新元素。 - 他們都有一個共同的特點就是都會改變原數組。
const reverseArr = ["a", "b", "c"];
console.log( reverseArr.reverse() );// 返回值:['c', 'b', 'a']
console.log( reverseArr ); // 原數組:['c', 'b', 'a']const sortArr = [5, 3, 6, 2, 7];
console.log( sortArr.sort() ); // 返回值:[2, 3, 5, 6, 7]
console.log( sortArr ); // 原數組:[2, 3, 5, 6, 7]const spliceArr = [1, 2, 3, 4, 5];
console.log( spliceArr.splice( 2, 2, "a", "b" ) ); // 返回值:[3, 4]
console.log( spliceArr ); // 原數組:[1, 2, 'a', 'b', 5]
- 如果你在對數組進行翻轉、排序、刪除并替換新元素時,不準備修改原數組。那么只能提前將數組拷貝一份,還需要注意深淺拷貝帶來的影響。
const reverseArr = ["a", "b", "c"];
console.log( [...reverseArr].reverse() );// 返回值:['c', 'b', 'a']
console.log( reverseArr ); // 原數組:['a', 'b', 'c']
- 此處借助了展開運算符拷貝數組。
二、知新
- 今天要介紹的這幾個新方法,就完美的解決了上面的問題。
toReversed
reverse
方法的升級版,返回值為翻轉后的新數組,不改變原數組
const reverseArr = ["a", "b", "c"];
console.log( reverseArr.toReversed() ); // 返回值:['c', 'b', 'a']
console.log( reverseArr ); // 原數組:['a', 'b', 'c']
toSorted
sort
方法的升級版,返回值為排序之后的新數組,不改變原數組
const sortArr = [5, 3, 6, 2, 7];
console.log( sortArr.toSorted() ); // 返回值:[2, 3, 5, 6, 7]
console.log( sortArr ); // 原數組:[5, 3, 6, 2, 7]
toSpliced
splice
的升級版,返回值為刪除并替換后的新數組,不改變原數組- 因為返回了操作后的新數組,所以無法獲取被刪除的元素
const spliceArr = [1, 2, 3, 4, 5];
console.log( spliceArr.toSpliced( 2, 2, "a", "b" ) ); // 返回值:[1, 2, 'a', 'b', 5]
console.log( spliceArr ); // 原數組:[1, 2, 3, 4, 5]
- 這三個方法,除了 返回值 和 對原數組的影響 外,其 參數 和 功能 并無差異。
- 這對于我們需要修改數組并保留原數組的需求來說非常方便:既能減少代碼量,還可以節省變量的創建,使我們的代碼更加簡潔,邏輯更加直觀。
如果你對數組的其他常規方法了解的不多,也可以先閱讀這篇文章【數組方法大全】