七種功能強大的數組方法
數組的功能遠不止 map()、filter()、find() 和 push()。但大多數開發人員對此一無所知 — 他們錯過了7種強大的方法。
現在,讓我們一起來看看。
1. copyWithin()
Array copyWithin() 將數組的一部分復制到同一數組中的另一個位置并返回它,而不會增加其長度。
end 參數是可選的:
2. at() 和 with()
at() 最先出現,with() 則在一年后的 2023 年出現。
它們是單元素數組修改和訪問的函數式和不可變版本。
這些新方法的妙處在于它們允許您使用負索引獲取和更改元素值。
3. 數組 reduceRight() 方法
工作原理與 reduce() 類似,但回調從右到左,而不是從左到右:
這是 reduceRight() 的另一個很好的應用場景:
4. 數組 findLast() 方法
ES13 中的新功能:從最后一個元素開始查找數組項。
非常適合從末尾位置搜索比使用 find() 產生更好性能的情況
示例:
這是可行的,但是由于我們的目標對象更接近數組的尾部,因此 findLast() 應該運行得更快:
findLast() 的另一個用例是當我們必須從末尾專門搜索數組以獲取正確元素時。
例如,如果我們想在數字列表中找到最后一個偶數,find() 會產生完全錯誤的結果:
但是 findLast() 將從末尾開始搜索并返回正確的項目:
5. toSorted()、toReversed()、toSpliced()
ES2023 完全支持 sort()、reverse() 和 splice() 的不可變版本。
好吧,也許 splice() 的使用頻率不如其他函數高,但它們都會就地改變數組。
不變性為我們提供了可預測且更安全的代碼;由于我們確定變量永遠不會改變其值,因此調試變得更加容易。
參數完全相同,但 splice() 和 toSpliced() 的返回值必須不同。
6. 數組 lastIndexOf() 方法
lastIndexOf() 方法返回數組中特定元素的最后一個索引。
我們可以將第二個參數傳遞給 lastIndexOf() 來指定數組中的索引,它應該在該索引之后停止搜索字符串:
7. 數組 flatMap() 方法
flatMap() 方法使用給定的回調函數轉換數組,然后將轉換后的結果展平一級:
在數組上調用 flatMap() 與調用 map() 后跟深度為 1 的 flat() 執行的操作相同,但它比分別調用這兩個方法效率更高一些。
寫在最后
雖然目前它們還不是那么出名,但它們有其獨特的用途并且功能非常強大,還是非常值得學習使用的。
我們一起期待JavaScript也越來越好用。