gpt4 book ai didi

javascript - ES6类似map的功能

转载 作者:行者123 更新时间:2023-12-03 01:55:01 25 4
gpt4 key购买 nike

我遇到了类似于 map 函数的代码,但我不理解所有语义。看一下这段代码:

const reduce = (reducer, accumulator) => arr => {
const [first, ...rest] = arr
return arr.length
? reduce(reducer, reducer(accumulator, first))(rest)
: accumulator
}

reduce((accum, current) => [...accum, current * 2], [])([1, 2, 3]);

你能解释一下这段代码是如何工作的吗?

  1. 为什么 ...accum 是第一个参数,但应该是最后一个,并且正是 ...accum 在本例中的含义?

  2. 为什么在 reduce 中调用第一个 reducer 时不带任何参数?

最佳答案

首先您需要了解reduce()函数的作用。这是一个很棒的article .

简而言之,它用于累加列表中的值。不一定是总和,但您可以在需要基于列表所有元素的结果的操作中使用它。

您的代码似乎是从列表中获取所有元素,并将其乘以 2。这就像 [...accum, current * 2] 基本上创建了一个数组,其中包含来自列表的所有值accum 数组,以及乘法结果。 (参见destructuring)

  1. 它正在解构 accum 中的值
  2. 它没有被调用,而是被传递,以便可以在函数中调用它。

总之,reduce 是一个高阶函数,它采用名为 reducer 的函数并递归调用它。现在,整个函数可以重写为仅使用 1 个 .reduce() 调用,但由于这不是您要问的,我不会批评。

关于javascript - ES6类似map的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50278629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com