在之前做的JS練習(xí)中露久,著重練習(xí)了集合操作更米,主要用到的就是map、reduce毫痕、filter這三個函數(shù)征峦。我們看個例子:
求一個序列中所有偶數(shù)乘三加一后的和
轉(zhuǎn)換成代碼:
collection.filter(n => (n % 2) == 0).map(n => n*3+1).reduce(function(total, x){ return total+x; });
首先我們使用filter將偶數(shù)過濾出來,之后將每個偶數(shù)乘三加一消请,再通過reduce累加栏笆,問題過程分解如下:
- 選出集合中的偶數(shù)
輸入:
inputArray: [Number]
輸出:
evenArray: [Number]
- 將所有偶數(shù)乘三加一
輸入:
evenArray: [Number]
輸出:
new_evenArray: [Number] - 求和
輸入:
new_evenArray: [Number]
輸出:
sum: Number
所以,我們在解決類似問題的時候臊泰,先將問題分割竖伯,然后使用相關(guān)功能的函數(shù)(沒有只能自己寫)計算,先進行過濾因宇,再進行操作七婴、最后迭代。
是不是感覺有點像函數(shù)式編程呢察滑?