兼容性來說: 活寶系列IE9以上可以支持,其他的就不贅述了,反正也只是用來做日記的.
reduce主要是對數(shù)組進行遍歷,累計,變形的方法;
基本用法:
let arr = [1,2,3,4,5];
let sum = arr.reduce(p1,p2);
function p1(a,b,c,d){
? ? //邏輯
}
參數(shù)一是一個回調(diào)函數(shù),依次有四個參數(shù):
a. 是前一個量,其實簡單來說就是上一次循環(huán)結(jié)束return的值,如果是第一個循環(huán),那么就會判斷,p2不為空,那么p2就會作為第一個次的a參與回調(diào)函數(shù)p1的執(zhí)行;如果p2為空,那么就會判斷數(shù)組arr是否是空,如果不為空,那么就會把arr的第一個元素作為a傳入,作為實參參與運算;
b. 是當前元素,就是arr的第幾個元素,等同于forEach的回調(diào)里的v
c. 是當前的索引
d. 是調(diào)用reduce方法的數(shù)組本身
需要注意的是如果要在下一個循環(huán)中使用a,那么就需要return一個值.
阮一峰的文章傳送門:阮一峰reduce和Transduce