JavaScript Array reduce() 方法

2025年3月17日 | 阅读 3 分钟

reduce() 方法通过执行一个 reducer 函数来将给定数组归约到单个值。用户实现的 reducer 函数会处理数组中的每个元素。

Reducer 函数

Reducer 函数是用户实现的。它使用以下四个参数来执行其任务:

  1. Accumulator (累加器): 累加器累积数组的返回值。
  2. Current Value (当前值): 当前元素是当前值。
  3. Current Index (当前索引): 当前元素的索引值是当前索引的值。
  4. Source array (源数组): 用户为实现 reduce() 方法定义的数组。

语法

参数

callback (回调函数): 如果未指定 initialValue,则 callback 是不包括第一个元素在内,为每个元素执行的主回调函数。

回调函数接受以下四个参数:

  1. accumulator (累加器): 累加器累积了回调函数在最后一次调用中返回的值。
  2. currentValue (当前值): 这是正在处理的当前元素的值。
  3. currentIndex (当前索引): 这是一个可选参数,保存了正在处理的当前元素的索引值。如果我们提供了初始值,索引将从 0 开始。否则从 1 开始。
  4. array (数组): 这也是可选的,它包含 reduce() 将要处理的元素。

initialValue (初始值): 这是在第一次调用回调函数时使用的第一个参数值。

返回

它返回一个单一的值作为输出。

注意事项

  1. 如果我们不提供初始值,回调函数将从索引 1 开始执行,此时会跳过第一个索引。然而,如果提供了 initialValue,执行将从 0 开始。
  2. 如果数组为空且未提供 initialValue,则会抛出 TypeError。
  3. 如果数组为空但提供了 initialValue,或者数组只有一个元素但未提供 initialValue,则会返回该元素而不会调用回调函数。

因此,提供初始值是安全且好的做法。

JavaScript Array reduce() 方法示例

让我们通过一些示例来更好地理解。

示例 1

这是一个简单地对数组元素求和并显示输出的示例。

立即测试

输出

JavaScript Array reduce() Method

示例 2

这是一个使用 reduce() 方法显示数组元素差值的示例。

立即测试

输出

JavaScript Array reduce() Method

Example3

这是一个使用箭头函数对数组元素求总和的示例。

立即测试

输出

JavaScript Array reduce() Method

Example4

当数组只包含一个值时。

立即测试

输出

JavaScript Array reduce() Method

因此,当数组包含单个元素时,无需创建回调函数。另外,因为当数组包含单个元素时,回调函数不会被调用。

我们可以使用数组的 reduce() 方法执行许多示例。


下一主题JavaScript 数组