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