功能
- 对数组中的每个元素按顺序执行回调函数,将其归约为单个值。
- 常用于数据的聚合或累加。
语法
array.reduce(callback: (accumulator, currentValue, index, array) => newAccumulator,initialValue?: T
)
callback
:回调函数,包含以下参数accumulator
:上一次回调的返回值。currentValue
:当前处理的元素。index
(可选):当前元素的索引。array
(可选):调用reduce
的原数组。
initialValue
:accumulator
的初始值。
示例
const numbers = [1, 2, 3, 4, 5];// 求和
const sum = numbers.reduce((acc, num) => acc + num, 0);
console.log(sum); // 15// 将数组转成对象
const keyValuePairs = [["key1", "value1"],["key2", "value2"],
];
const obj = keyValuePairs.reduce((acc, [key, value]) => {acc[key] = value;return acc;
}, {} as Record<string, string>);
console.log(obj); // { key1: "value1", key2: "value2" }// 统计字符出现次数
const chars = ["a", "b", "a", "c", "b", "a"];
const charCount = chars.reduce((acc, char) => {acc[char] = (acc[char] || 0) + 1;return acc;
}, {} as Record<string, number>);
console.log(charCount); // { a: 3, b: 2, c: 1 }
我们可以显式指定 initialValue 的类型,确保类型安全
const numbers = [1, 2, 3, 4, 5];// 显式指定类型
const product = numbers.reduce<number>((acc, num) => acc * num, 1);
console.log(product); // 120