【发布时间】:2017-05-20 06:42:11
【问题描述】:
var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
var countedNames = names.reduce(function(allNames, name) {
if (name in allNames) {
allNames[name]++;
}
else {
allNames[name] = 1;
}
return allNames;
}, {});
在最后一行中,他们为什么将一个空对象传递给 reduce 函数。
【问题讨论】:
-
您面临的问题是什么?那是初始值,在它之上将构造结果
-
rtfm :)
-
我投票结束这个问题,因为它可以通过阅读减少文档来回答。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
因为 reduce 的最后一个参数是“初始值”,并且它们以一个空对象开头,reduce 将填满计数器。你应该检查 reduce 是如何工作的:developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
-
@epascarello 有时文档不足以解释某些事情,尤其是因为这是
.reduce的(非常)不寻常的用法