首页 > 解决方案 > 需要解释 Array.prototype.reduce() 语法

问题描述

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

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

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

}, []);

这里发生了什么?我知道方括号表示一个数组,我猜这段代码与将累加器变成数组有关吗?我假设如果这段代码不存在,“累加器”将是一个值而不是一个数组。但我无法完全掌握发生了什么。我希望能够用我自己的话向自己解释这一点。有人可以帮我准确理解代码在这里做什么吗?

标签: javascript

解决方案


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


推荐阅读