我在一个包含多个具有相同值的条目的数组上使用Array.prototype.reduce()函数来生成一个新数组,每个值仅包含一个实例(唯一值)。我正确使用了该函数,并且产生了正确的结果。尽管如此,这段代码还是有一段我不理解的地方。我要问的是,是否有人可以向我解释这段代码是如何工作的。我想了解这一点,以进一步了解Javascript。这是完整的代码:
var uniqueNames = names.reduce(function (accumulator, currentValue) {
if(accumulator.indexOf(currentValue) === -1) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
除了代码的最后一部分,我了解这里正在发生的一切。我指的是
}, []);
这是怎么回事?我知道方括号表示一个数组,我猜测这段代码与将累加器转换为数组有关吗?我假设如果这段代码不存在,则“累加器”将是一个值而不是一个数组。但是我无法完全掌握正在发生的事情。我希望能够用自己的话向我自己解释。有人可以帮助我确切地了解代码在这里做什么吗?