reduce() 本质只是循环遍历数组,最终返回单个值。从这篇文章中 js数组常用方法归类 更好理解,它的分类是“迭代方法”。至于数组如何循环怎么计算,由reduce()中的回调函数决定,回调函数逻辑可以是求和、求积、最大值、最小值、统计某个元素出现的次数等。
reduce()基本语法
array.reduce(callback, initialValue)
reduce()参数说明
1. callback:对数组中每个元素进行相应运算的函数
arr.reduce( function (accumulator, currentValue, currentIndex, array) {
// return 逻辑运算求和、求积等;
}, initialValue);
· accumulator:累积器,即回调的返回值。
· currentValue:当前元素,循环中正在处理的元素。
· currentIndex(可选):当前元素的索引。
· array(可选):调用 reduce() 的数组。
2.initialValue(可选):规定累积器accumulator的初始值。
reduce()常见使用场景
1. 数组求和
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 10
2. 数组求积
const numbers = [1, 2, 3, 4];
const product = numbers.reduce((acc, curr) => acc * curr, 1);
console.log(product); // 24
3. 查找最大值
const numbers = [5, 2, 9, 1, 5];
const max = numbers.reduce((acc, curr) => Math.max(acc, curr));
console.log(max); // 9
4. 数组转对象
const fruits = ['apple', 'banana', 'orange'];
const fruitObj = fruits.reduce((acc, curr, index) => {
acc[index] = curr;
return acc;
}, {});
console.log(fruitObj); // {0: "apple", 1: "banana", 2: "orange"}
5. 统计元素出现次数
const words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple'];
const count = words.reduce((acc, curr) => {
acc[curr] = (acc[curr] || 0) + 1;
return acc;
}, {});
console.log(count); // {apple: 3, banana: 2, orange: 1}
6. 扁平化二维数组
const arr = [[1, 2], [3, 4], [5, 6]];
const flattened = arr.reduce((acc, curr) => acc.concat(curr), []);
console.log(flattened); // [1, 2, 3, 4, 5, 6]
上一篇:js剩余参数详解