Array.prototype.reduce
- 一:简介
- 二:语法
- 三:参数:
-
- 3.1:第一个参数:cb函数;
- 3.2:第二个参数:初始值;
- 四:Demo示例;【可掠过上方直接阅读】
-
- 4.1 基础用法[ 数组元素为基础数据类型:number\string];
- 4.2 进阶用法[ 数组元素为Object];
-
- 4.2.1 javaScript版本
- 4.2.1 TypeScript版本
一:简介
reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
二:语法
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
cb回调函数 必填
initialValue可选 :作为第一次调用 cb函数时的第一个参数的值
三:参数:
3.1:第一个参数:cb函数;
cb函数包含4个参数:
1. accumulator:累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue;
2. currentValue :数组中正在处理的元素;
3. index :数组中正在处理的当前元素的索引;如果提供了initialValue,则起始索引号为0,否则从索引1起始
4. array: 调用reduce()的数组;
3.2:第二个参数:初始值;
1. 作为第一次调用 callback函数时的第一个参数的值
2. 如果没有提供初始值,则将使用数组中的第一个元素
四:Demo示例;【可掠过上方直接阅读】
4.1 基础用法[ 数组元素为基础数据类型:number\string];
let arr = [1, 2, 3, 4, 5];
const cb = (accumulator, currentValue, index, arr) => {
return accumulator + currentValue
}
let total = arr.reduce(cb,2);
console.log(total,44444)
4.2 进阶用法[ 数组元素为Object];
4.2.1 javaScript版本
var total;
var arr = [{ num: 1 }, { num: 1 }, { num: 1 }, { num: 1 }, { num: 6 }];
var cb = function (accumulator, currentValue, index, arr) {
if (index === arr.length - 1) {
total = accumulator.num + currentValue.num;
}
return {
num: accumulator.num + currentValue.num
};
};
var accumulation = function () {
console.log(arr.reduce(cb), '总数', total);
};
accumulation();
4.2.1 TypeScript版本
interface customClass {
num: number
}
let totalNum: number;
const arr: Array<customClass> = [{ num: 1 }, { num: 1 }, { num: 1 }, { num: 1 }, { num: 6 }];
const cb = (accumulator: customClass, currentValue: customClass, index: number, arr: Array<customClass>): customClass => {
if (index === arr.length - 1) {
totalNum = accumulator.num + currentValue.num
}
return {
num: accumulator.num + currentValue.num
};
}
const accumulation = ():void => {
console.log('reduce执行结果=' + JSON.stringify(arr.reduce(cb)), 'totalNum=' + totalNum)
}
accumulation();