paint-brush
减少 Javascript:掌握基础知识经过@iggy
1,685 讀數
1,685 讀數

减少 Javascript:掌握基础知识

经过 Ignatius Sani4m2023/01/11
Read on Terminal Reader

太長; 讀書

reduce Javascript 数组方法是函数式编程的重要组成部分。它接受一个数组并将其简化为一个值。这是通过依次对数组的每个元素运行回调函数来完成的。要理解本文并有效地实施该方法,需要具备基本的语言知识。
featured image - 减少 Javascript:掌握基础知识
Ignatius Sani HackerNoon profile picture

今天我们将讨论减少 Javascript 数组的方法,以及我们如何使用它来将数组减少为单个值。所有编写的代码片段都是用 Javascript 语言编写的。要理解本文并有效地实施该方法,需要具备基本的语言知识。

什么是 reduce Javascript 方法?

reduce Javascript 数组方法是函数式编程的重要组成部分,它接受一个数组并将其缩减为一个值。这是通过依次对数组的每个元素运行回调函数,并将计算结果传递给它之前的元素来实现的。


 const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const initialValue = 0; const sumWithInitial = array1.reduce((accumulator, currentValue) => accumulator + currentValue, initialValue) console.log(sumWithInitial); // expected output: 10


上面的代码片段是一个数字数组;当我们调用它的 reduce 方法时,它获取整个数组并只返回一个值 10。


理解“reduce”Javascript 参数和参数

如果我们必须正确使用该方法,那么非常具体地了解“reduce”Javascript 参数是什么非常重要。下面我突出显示了这些参数;我们将一个接一个地学习它们,然后最后将所有内容放在一起以理解它。


  1. 回调函数
  2. 初始值


回调函数

此函数对数组中的每个项目运行。在随后的回调 Fn 执行中,其返回值更改为累加器参数的值。最终调用的返回值更改为 reduce()。


调用函数时提供以下参数:


  1. 累加器
  2. 当前值
  3. 当前索引
  4. 大批


累加器

这是最后一次调用回调 Fn 的结果,以值表示。如果提供,则在第一次调用时使用 initialValue;如果不是,则使用 array[0]。


当前值

这是当前元素的值。如果提供了 initialValue,则索引 0 (array[0]) 上的数组的值将在第一次调用时返回;如果不是,将返回索引 1 (array[1])。


当前索引

这是数组的当前值的索引位置。如果在第一次调用时给出了 initialValue,它的位置将在索引 0 上;否则,它将在索引 1 上。


大批

这只是使用了 reduce() 方法的数组。


初始值

用于在第一次回调时初始化累加器的值。如果提供了 initialValue,callbackFn 开始运行时会将 currentValue 设置为数组的第一个元素。如果省略 initialValue,则累加器设置为数组的第一个值,并且 callbackFn 开始运行,currentValue 设置为数组的第二个值。如果在这种情况下数组为空(即没有初始项作为累加器返回),则会引发错误。


把一切放在一起

reduce(Function (accumulator, currentValue, currentIndex, array) { /* … */ }, initialValue)

所有这些参数的组合应该看起来就像上面的代码片段。


“reduce”Javascript 方法如何工作?

让我们更深入地研究这个简化的 Javascript 方法,看看幕后发生了什么。


 const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const initialValue = 0; const sumWithInitial = array1.reduce( (accumulator, currentValue) => accumulator + currentValue, initialValue );


reduce Javascript 方法所做的就是循环遍历项目,每次循环遍历我们都会返回一个单独的项目,并获得从 reduce() 返回的先前值。如果它是 reduce() 中的第一项,我们只会返回零,因为这是我们的默认值。例如,如果我们将默认值更改为 50,则会影响数组。


我们取零或默认数字并将其添加到我们的第一项;在前面的代码中,我们会得到一个总和为 1 的值。我们对下一个项目再次执行此操作,即 2。我们将 1 + 2 相加得到 3;我们继续这个过程,直到我们到达最后一个项目。



累加器

当前值

指数

返回值

第一次通话

0

1个

0

1个

第二次通话

1个

2个

1个

3个

第三次通话

3个

3个

2个

6个

第四次通话

6个

4个

3个

10


上表更清楚地说明了我们每次使用此方法时会发生什么。请注意,此结果会因 initialValue 而异。


结论

最后一点,reduce Javascript 是一种迭代方法。它通过按升序索引顺序对每个元素应用“reducer”回调函数,将数组的所有项目收集到一个值中。当再次调用 callbackFn 时,callbackFn 返回值始终作为累加器提供。 Reduce 从累加器的最后一个值返回其返回值,该值是数组最后一次迭代时从回调 Fn 返回的值 ()。


虽然作为 callback-Fn 提供的函数可以修改,但调用它的数组 reduce() 不能。但是,请注意,数组的长度在执行初始回调 Fn 之前会保留下来。