第 1 部分:在 JavaScript 中自定義實(shí)現(xiàn)映射()、簡(jiǎn)化() 和過(guò)濾()方法。
腳本中的多邊填充
今天我將向您展示實(shí)現(xiàn),或者我們稱之為3種廣泛使用和著名的數(shù)組方法的Polyfills(自定義實(shí)現(xiàn))。
這是面試官可以要求你寫(xiě)一些關(guān)于這些方法的幕后實(shí)現(xiàn)(映射,簡(jiǎn)化,過(guò)濾)的東西。每次都會(huì)為數(shù)組的新副本編寫(xiě)這些函數(shù),因此它不會(huì)改變您的實(shí)際數(shù)組。
1. 地圖()
map() 是一個(gè)接受回調(diào)函數(shù)的方法,該函數(shù)對(duì)數(shù)組的每個(gè)元素執(zhí)行。簡(jiǎn)單來(lái)說(shuō),它用于操作/轉(zhuǎn)換該數(shù)組中存在的元素。
它返回一個(gè)新數(shù)組(這意味著它不會(huì)改變或更改您的實(shí)際數(shù)組)。
從映射中出來(lái)的數(shù)組是一個(gè)轉(zhuǎn)換后的數(shù)組,它可能與實(shí)際數(shù)組相同,也可能不相同。
自定義實(shí)現(xiàn)
自定義地圖實(shí)現(xiàn)
map() 的這個(gè)自定義實(shí)現(xiàn)將返回轉(zhuǎn)換后的數(shù)組。
為什么我們需要附加它的原型?
由于數(shù)組就像一個(gè)對(duì)象,它有一些內(nèi)置的方法。要重寫(xiě)或編寫(xiě)我們的自定義方法并使其可用于數(shù)組類(lèi),它需要附加到原型鏈,該原型鏈將在JavaScript中執(zhí)行繼承。因此,要為數(shù)組或?qū)ο筇峁┤魏巫远x方法,您需要在其原型鏈上調(diào)用方法。
2. 減少()
reduce() 是接受稱為化簡(jiǎn)器的回調(diào)函數(shù)的方法。
它在數(shù)組的每個(gè)元素上調(diào)用,這些元素最終累積為單個(gè)值。
回調(diào)符(化簡(jiǎn)器)包含以下參數(shù):
上一個(gè)值:我們從上次函數(shù)調(diào)用中獲得的值。在第一次調(diào)用時(shí),如果給出,它將返回“初始值”,否則,它將返回arr[0]的值。
當(dāng)前值:當(dāng)前元素的值。在第一次調(diào)用時(shí),如果給出初始值,則返回 arr[0] 的值,否則返回 arr[1] 的值。
當(dāng)前索引:元素的當(dāng)前索引。如果給出初始值,它必須為 0,否則應(yīng)從索引 1 開(kāi)始。
數(shù)組:用于遍歷的數(shù)組。
使用案例:
無(wú)初始值
具有初始值
自定義實(shí)現(xiàn)減少()
3. 過(guò)濾器()
filter() 方法接受一個(gè)回調(diào),該回調(diào)針對(duì)給定數(shù)組的每個(gè)項(xiàng)執(zhí)行。
與上面相同 — 它返回一個(gè)新數(shù)組。
它將返回篩選的真實(shí)值。
過(guò)濾器()函數(shù)的自定義實(shí)現(xiàn)
這就是一些數(shù)組方法的自定義實(shí)現(xiàn)的工作原理,也是一個(gè)很好的起點(diǎn),您可以在其中了解JavaScript如何在后臺(tái)創(chuàng)建其內(nèi)置方法實(shí)現(xiàn)及其工作原理。
您可以創(chuàng)建自己的 Polyfill 或像這樣的自定義方法,并將其附加到原型鏈,以使其可用于 JavaScript 環(huán)境中使用的引用或抽象類(lèi)。