建站须知
企业网站建设的流程主要有哪些

UI设计、域名服务器、写代码、后台开发

js数组reduce方法使用案例和注意事项

时间:2025-04-21   查看:74次

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]