最近工作的事情太多钠四,好幾個項目交替在一起踱阿,導致這一塊的精更沒有順利的進行下去透罢,今天抽空進行下去要门。對于數(shù)組的方法通過函數(shù)式來實現(xiàn):在這里我將一步一步的把這篇文章更新完成虏肾。
Array的forEach方法函數(shù)式的實現(xiàn)。
首先我們進行定義:
在對數(shù)組的forEach進行模擬欢搜,我們可以清晰的知道封豪,這就是一個簡單的數(shù)組循環(huán),沒有任何覺得高端的地方炒瘟。正是這樣的吹埠。他沒有任何關(guān)于外界交互。他就是純粹在自我的世界里。輸入什么就會得到制定的輸出藻雌。
下面開看他的測試(以圖例說明):
看例子就知道了雌续。結(jié)果就不用在這里貼出來了。接下來我們思考如果實現(xiàn)map胯杭。
Array的map方法函數(shù)式的實現(xiàn)
別的不說我們先上定義好的代碼驯杜,然后進行一步一步的分析
在代碼層面上,只是使用const定義一個map變量做个,來接收一個函數(shù)鸽心。與froEach不同的是,map返回值是一個數(shù)組對象居暖。如何實現(xiàn)這個功能呢顽频?當然是在純粹的地方干著純粹的事情。在方法中定義一個空數(shù)組rerule來存儲我們需要最后返回的對象太闺,這樣就能實現(xiàn)map的純粹返回對象的功能了糯景。
接下來我們看其測試用例:
不難發(fā)現(xiàn),跟使用array的map方法一摸一樣省骂。
Array的filter方法的函數(shù)式實現(xiàn)
實現(xiàn)過map的方法之后蟀淮,我們發(fā)現(xiàn)map是返回依賴原始數(shù)組的每一項組成的新對象數(shù)組的返回值。但是無法過濾不需要的狀態(tài)钞澳。恰好filter實現(xiàn)完美實現(xiàn)這一塊的需求的怠惶。
繼續(xù)看他的定義:
對比map的代碼發(fā)現(xiàn),只有再循環(huán)中的判斷不同轧粟, (fn(array[i], i)) ? rerult.push(array[i]) : undefined策治; 仔細看這么代碼我們很簡單的就回發(fā)現(xiàn),在回調(diào)函數(shù)中不滿足條件的會返回undefined兰吟,滿足條件的會被原樣返回通惫。
接下來看測試用例
這里大家會發(fā)現(xiàn),跟使用array的filter方法一樣揽祥,簡單有好用讽膏。還可以深入其底層實現(xiàn)。
Array的concat方法的函數(shù)式實現(xiàn)
在很多時候我們需要把數(shù)組對象中的某一個屬性為array的所有項合并到一個單獨的數(shù)組中進行管理拄丰,我應該如何做呢府树?
來我們先上代碼:
接下來我們直接更上我們的測試代碼:
接著更上運行結(jié)果:
今天就更新到這里,也沒有對里面的代碼做一步一步的分析料按,找個時間會補上奄侠。
歡迎大家關(guān)注我。