ES6 之reduce的基本介紹與使用
現(xiàn)在ES6語法應(yīng)用的特別廣泛,今天我們就來介紹下ES6中的reduce方法,它的用法非常強(qiáng)大,下面就跟著我一起來學(xué)習(xí)它吧
01
基本介紹
定義:對數(shù)組中的每個(gè)元素執(zhí)行一個(gè)自定義的累計(jì)器,將其結(jié)果匯總為單個(gè)返回值
形式:array.reduce((t, v, i, a) => {}, initValue)
?參數(shù)
? callback:回調(diào)函數(shù)(必選)
? initValue:初始值(可選)
callback回調(diào)函數(shù)的參數(shù)
?????total(t):累計(jì)器完成計(jì)算的返回值(必選)
?????value(v):當(dāng)前元素(必選)
????? index(i):當(dāng)前元素的索引(可選)
????? array(a):當(dāng)前元素所屬的數(shù)組對象(可選)
過程(重點(diǎn)看)
? 以t 作為累計(jì)結(jié)果的初始值,不設(shè)置t則以數(shù)組第一個(gè)元素為初始值
?開始遍歷,使用累計(jì)器處理v,將v的映射結(jié)果累計(jì)到t上,結(jié)束此次循環(huán),返回t
? 進(jìn)入下一次循環(huán),重復(fù)上述操作,直至數(shù)組最后一個(gè)元素
? 結(jié)束遍歷,返回最終的t
02
如何運(yùn)行
假如運(yùn)行下段reduce()代碼:
callback 被調(diào)用四次,每次調(diào)用的參數(shù)和返回值如下表:

03
reduce方法的應(yīng)用
reduce() 的幾個(gè)強(qiáng)大用法:
數(shù)組求和
二維數(shù)組轉(zhuǎn)為一維數(shù)組
計(jì)算數(shù)組中每個(gè)元素出現(xiàn)的次數(shù)
方法一:
方法二:
數(shù)組去重
下面的方法,先要對數(shù)組進(jìn)行升序排列
相關(guān)面試題:
完成一個(gè)'flatten'的函數(shù),實(shí)現(xiàn)“拍平”一個(gè)多維數(shù)組為一維.
如:var testArr2 = [0, [1, [2, [3, [4, [5]]]]]];