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