js 数组的 reduce() 方法详解

reduce() 方法

reduce() 语法

reduce 的发音:[rɪ’djuːs]。中文含义是减少,但这个方法跟"减少"没有什么关系。

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。返回值是回调函数累计处理的结果。

语法

arr.reduce(function (previousValue, currentValue, currentIndex, arr) {}, initialValue);

参数解释:

  • previousValue:必填,上一次调用回调函数时的返回值

  • currentValue:必填,当前正在处理的数组元素

  • currentIndex:选填,当前正在处理的数组元素下标

  • arr:选填,调用 reduce()方法的数组

  • initialValue:选填,可选的初始值(作为第一次调用回调函数时传给 previousValue 的值)

在以往的数组方法中,匿名的回调函数里是传三个参数:item、index、arr。但是在 reduce() 方法中,前面多传了一个参数previousValue,这个参数的意思是上一次调用回调函数时的返回值。第一次执行回调函数时,previousValue 没有值怎么办?可以用 initialValue 参数传给它。

备注:绝大多数人在一开始接触 reduce() 的时候会很懵逼,但是没关系,有事没事多看几遍,慢慢地自然就掌握了。如果能熟练地使用 reduce() 方法,不仅能替代很多其他的数组方法,还能逐渐走上进阶之路,领先于他人。

为了方便理解 reduce(),我们先来看看下面的简单代码,过渡一下:

let arr1 = [1, 2, 3, 4, 5, 6];

arr1.reduce((prev, item) => {
    console.log(prev);
    console.log(item);
    console.log('------');
    return 88;
}, 0);

打印结果:

上面的代码中,由于return的是固定值,所以 prev 打印的也是固定值(只有初始值是 0,剩下的遍历中,都是打印 88)。

现在来升级一下,实际开发中,prev 的值往往是动态变化的,这便是 reduce()的精妙之处。我们来看几个例子就明白了。

reduce() 的常见应用

举例 1、求和:

计算数组中所有元素项的总和。代码实现:

const arr = [2, 0, 1, 9, 6];
// 数组求和
const total = arr.reduce((prev, item) => {
    return prev + item;
});

console.log('total:' + total);  // 打印结果:18

举例 2、统计某个元素出现的次数:

代码实现:

// 定义方法:统计 value 这个元素在数组 arr 中出现的次数
function repeatCount(arr, value) {
    if (!arr || arr.length == 0) return 0;	// 数组为空或者数组中没有这个元素,返回结果 0

    return arr.reduce((totalCount, item) => {
        totalCount += item == value ? 1 : 0;
        return totalCount;
    }, 0);
}

let arr1 = [1, 2, 6, 5, 6, 1, 6];

console.log(repeatCount(arr1, 6));  // 打印结果:3

举例 3、求元素的最大值:

代码实现:

const arr = [2, 0, 1, 9, 6];
// 求数组中的最大值
const maxValue = arr.reduce((prev, item) => {
    return prev > item ? prev : item;
    // return Math.max(prev, item)
});

console.log(maxValue);  // 打印结果:9

参考链接:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在JavaScript中,数组reduce()方法用于对数组中的元素进行累积操作。它接受一个回调函数和一个初始值作为参数。该回调函数用于对数组中的每个元素执行操作,并返回累积结果。如果没有提供初始值,则从索引1开始执行回调函数,跳过第一个索引;如果提供了初始值,则从索引0开始执行回调函数。下面是reduce()方法的几个简单用法。 1. 求和、求乘积等等: 可以使用reduce()方法数组中的元素进行求和、求乘积等操作。例如,给定一个数组arr = [1, 2, 3, 4, 5,可以使用reduce()方法求出数组元素的和、乘积、差和商。,可以使用reduce()方法求出数组元素的累加和和累乘积。,可以使用reduce()方法将重复的元素去除,返回一个新的数组。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [JS数组reduce()方法详解](https://blog.csdn.net/weixin_47619284/article/details/125921346)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [JS 数组中的 reduce 方法](https://blog.csdn.net/a15220216758/article/details/125029602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值