咨询JS数组.reduce()方法中currentValue与initialValue的作用
数组reduce()方法:currentValue与initialValue详解
一、currentValue到底是什么?
currentValue就是reduce遍历数组时,当前正在处理的那个元素。拿你的代码举例:
const array1 = [1, 2, 3, 4];
reduce会逐个遍历数组元素,每次循环的currentValue对应如下:
- 第1次循环:currentValue = 1
- 第2次循环:currentValue = 2
- 第3次循环:currentValue = 3
- 第4次循环:currentValue = 4
每次循环里,它都会和accumulator(累加器)执行你写的逻辑(这里是相加),最终得到累加结果。
二、initialValue的作用与参数写法
作用
initialValue是给accumulator设置的初始值。你的代码里初始值设为0,所以整个累加过程是:0(初始值) + 1 + 2 + 3 + 4 = 10
如果不写initialValue,reduce会默认把数组的第一个元素作为accumulator的初始值,然后从第二个元素开始遍历。比如:
const sumWithoutInitial = array1.reduce((acc, curr) => acc + curr);
它的执行过程是:1(数组第一个元素) + 2 + 3 + 4 = 10
结果一样,但如果数组是空数组,不写initialValue会直接报错,写了则会返回初始值——这是两者的核心区别。
参数写法的原因
reduce的参数结构就是:第一个参数是处理逻辑的回调函数,第二个参数是可选的初始值。逗号就是用来分隔这两个独立参数的,和普通函数func(参数1, 参数2)的写法完全一致,没什么特殊的。你的代码里第一个参数是箭头函数,第二个是initialValue,所以用逗号分开就行。
内容的提问来源于stack exchange,提问作者mikeli
相关产品推荐
相关产品推荐

