javascript - 需要解释 Array.prototype.reduce() 语法
问题描述
我在包含相同值的多个条目的数组之一上使用 Array.prototype.reduce() 函数来生成一个新数组,其中每个值只有一个实例(唯一值)。我正确使用了该功能并且它产生了正确的结果。尽管如此,这段代码有一段我不明白。我只想问是否有人可以向我解释这段代码是如何工作的。我想了解这一点以进一步了解 Javascript。这是整个代码:
var uniqueNames = names.reduce(function (accumulator, currentValue) {
if(accumulator.indexOf(currentValue) === -1) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
除了代码的最后一部分,我了解这里发生的一切。我指的部分是
}, []);
这里发生了什么?我知道方括号表示一个数组,我猜这段代码与将累加器变成数组有关吗?我假设如果这段代码不存在,“累加器”将是一个值而不是一个数组。但我无法完全掌握发生了什么。我希望能够用我自己的话向自己解释这一点。有人可以帮我准确理解代码在这里做什么吗?
解决方案
正如您在此处看到的,Array.reduce() 将设置累加器的初始值作为可选参数。这意味着您的累加器变量在第一次迭代之前被初始化为一个空数组。
推荐阅读
- reactjs - 如何使用反应向列表中的子项添加键?
- firebase - Firebase auth:export 陷入无限循环
- java - Mongodb java驱动程序在使用聚合读取时自动将日期转换为本地机器时区
- javascript - Webpack 可以处理 Django 静态文件(图像)吗?
- c++ - 在精神 qi 中将 qi::lexeme 添加到规则时编译失败
- javascript - 如何创建将线条均匀填充到最后的元素,例如下面的 img?
- c++ - 如何修复我的虚幻项目中的“符号查找错误”?
- jenkins - 是否可以在 Jenkins 流水线中并行运行多个阶段及其各自的步骤?
- c# - IMU 传感器 LPMS-B2:无法通过蓝牙连接到 Unity 应用程序?
- javascript - 使用 JS 在循环中运行函数