Javascript 数组方法'reduce'的作用是什么?

Javascript 数组方法'reduce'的作用是什么?,javascript,arrays,reduce,Javascript,Arrays,Reduce,我发现了一个非常有用的函数reduce,我正在使用它,但我不确定我是否正确理解它。有人能帮我理解这个函数吗 例如: var-arr=[1,2,3,4,5,6]; arr.REDUCT(功能(p,n){ 返回p+n; }, 0); //产出21 这是我的理解:reduce循环遍历数组的每个元素,并返回previous+current value。例如0+1,1+2等。在这种情况下,此函数将返回: [0]-返回1 [1] -返回3 [2] -返回5 [3] -返回7 [4] -返回9 [5] -返

我发现了一个非常有用的函数
reduce
,我正在使用它,但我不确定我是否正确理解它。有人能帮我理解这个函数吗

例如:

var-arr=[1,2,3,4,5,6];
arr.REDUCT(功能(p,n){
返回p+n;
}, 0);
//产出21
这是我的理解:
reduce
循环遍历数组的每个元素,并返回
previous+current value
。例如
0+1
1+2
等。在这种情况下,此函数将返回:

[0]-返回1
[1] -返回3
[2] -返回5
[3] -返回7
[4] -返回9
[5] -返回11
接下来呢?为什么它会给出结果?

取自,
arr.reduce()
将数组减少到回调指定的值。在您的例子中,它将基本上对数组的元素求和。 步骤:

  • 调用0,1上的函数(0是作为第二个参数传递给
    .reduce()
    的初始值。返回od 0和1之和,即1
  • 对上一个结果(即1)和下一个数组元素调用函数。这将返回1和2之和,即3
  • 重复此步骤,直到最后一个元素,其总和为21
reduce()方法有两个参数:为数组中的每个元素调用的回调函数和初始值

回调函数还有两个参数:累加器值和当前值

数组的流(
[1,2,3,4,5,6]
)如下所示:

1. return 0 + 1 // 0 is the accumulator which the first time takes the initial value, 1 is the current value. The result of this becomes the accumulator for the next call, and so on..
2. return 1 + 2 // 1 - accumulator, 2 - current value
3. return 3 + 3 // 3 - accumulator, 3 - current value, etc...
4. return 6 + 4
5. return 10 + 5
6. return 15 + 6

当到达数组末尾时,返回累加器,这里是21。为了更好地理解reduce的工作原理,请使用下面的sum(a,b)函数,该函数为它执行的每个操作记录一个文本,如
a+b=c

函数和(a,b){
常数c=a+b;
log(`${a}+${b}=>${c}`)
返回c;
}
常数arr=[1,2,4,8];
const result=arr.reduce(总和);

console.log(`result=${result}`)
当您不理解它时…请阅读文档“reduce()方法对累加器和数组的每个值(从左到右)应用一个函数,以将其减少为单个值。”对每个迭代值都有很好的解释Scharlietf-我做了,但仍然不理解。这就是我问的原因。Reduce是动态规划,我告诉你:3我现在明白了。我认为我示例中的“p”是数组的前一个值。谢谢!顺便说一下,初始值(即0)是可选的,在此特定示例中省略它将产生相同的结果,只需少调用一次函数。干运行是从《计算机科学概论》开始的基本概念,它可以帮助您识别@Steave算法的流程甚至复杂性