JS reduce() 方法使用细节归纳

一、reduce语法介绍

array.reduce((prev, item, index, arr)=> {
    /***/
}, initialValue)

参数:

参数一 callback 函数,包含了四个参数:

prev提供了 initialValue,则为之
为提供 initialValue,为数组的第一项
item当前数组循环正在处理的数组元素
index当前 currentValue 的索引
array执行 reduce 操作的数组

参数二 initialValue 初始值,初始值可提供,也可不提供。提供初始值,item 从数组第一项开始,若不提供初始值,则 item 从第二项开始执行,对应的第一次 prev 是数组第一项的值

返回值:

返回最后的执行结果

二、举例

let arr = ['h','i','n','a']
let str = arr.reduce((prev, item, index, arr)=> {
    console.log(prev, item, index, arr)
    return prev + item
}, 'C')
console.log(str) // China

循环打印结果如下图:

三、注意事项

1. reduce是一个对数组累积操作的方法,使用时要加上 return 返回累积操作的数据。这样 prev 才能获取上一次执行的结果,否则是 undefined

2. 空数组执行 reduce 操作且不提供初始值时reduce会报错,错误信息如下:

 四、具体使用

1. 数组去重

let arr = [1, 2, 2, 2, 3, 3, 4, undefined, undefined, null]
arr.reduce((prev, item) => {
    return prev.includes(item) ? prev : prev.concat(item);
}, [])

// [1, 2, 3, 4, undefined, null]

2. 数组降维

let arr = [0,[1],[2, 3],[4, [5, 6, 7]]];
let reduceArray = function (arr) {
    return arr.reduce((prev, item) => {
        return prev.concat(Array.isArray(item) ? reduceArray(item) : item)
    }, [])
}
reduceArray(arr)

//[0, 1, 2, 3, 4, 5, 6, 7]

3. 数组累加

let arr = [1, 2, 3, 4]
arr.reduce((prev, item) => {
    return prev + item;
})

// 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值