需要解释Array.prototype.reduce()语法

时间:2019-04-17 18:02:23

标签: javascript

我在一个包含多个具有相同值的条目的数组上使用Array.prototype.reduce()函数来生成一个新数组,每个值仅包含一个实例(唯一值)。我正确使用了该函数,并且产生了正确的结果。尽管如此,这段代码还是有一段我不理解的地方。我要问的是,是否有人可以向我解释这段代码是如何工作的。我想了解这一点,以进一步了解Javascript。这是完整的代码:

var uniqueNames = names.reduce(function (accumulator, currentValue) {
  if(accumulator.indexOf(currentValue) === -1) {
    accumulator.push(currentValue);
  }
  return accumulator;
}, []);

除了代码的最后一部分,我了解这里正在发生的一切。我指的是

}, []);

这是怎么回事?我知道方括号表示一个数组,我猜测这段代码与将累加器转换为数组有关吗?我假设如果这段代码不存在,则“累加器”将是一个值而不是一个数组。但是我无法完全掌握正在发生的事情。我希望能够用自己的话向我自己解释。有人可以帮助我确切地了解代码在这里做什么吗?

1 个答案:

答案 0 :(得分:2)

您可以看到here,Array.reduce()将初始值作为可选参数来设置累加器。这意味着您的累加器变量在第一次迭代之前被初始化为一个空数组。