reduce()方法
1、该方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值;
2、该方法可以作为一个高阶函数,用于函数的compose
注意
该方法对于空数组是不会执行回调函数的。
语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数 | 描述 | ||||||||||
function(total,currentValue,index,arr) | 必传,用于执行每个数组元素的函数
|
||||||||||
initialValue | 可选,传递给函数的初始值 |
如果没有设置初始值,循环会从索引为零开始。
实际应用(一)
官方案例-累加计算
function getSum(total, num) {
return total + num;
}
[65, 44, 12, 4].reduce(getSum)
//没有设置初始值,循环从数组索引为零开始执行。
实际应用(二)
//判断数组是否连续
let a1rr = [3, 4, 4, 6, 7, 8, 9, 10, 11];
function getContinueFun2(arr) {
let ress = arr.reduce((flag, cur, ind, arr) => {
arr[ind + 1] - cur == 1 ? flag++ : ''
return flag;
}, 0);
return ress == arr.length - 1
}
getContinueFun2(a1rr)
实际运用(三)
//每个值出现次数都为一。如果是返回true,否则返回false。
function getUniNum(arr) {
let obj = arr.reduce((obj, curr, i, arr) => {
obj[curr] ? obj[curr]++ : obj[curr] = 1;
return obj
}, {});
return Object.values(obj).length === arr.length
}
getUniNum([1,'name',2,4,3,'name'])
新手上路,欢迎讨论。