在 MDN Array.prototype.reduce() 中,
allNames[name]
是什么意思?allNames
应该首先是一个空对象{}
,但如果对象是空的,allNames[name] = 1
等同于 {}['Alice'] = 1
吗?它如何变成{ 'Alice': 1}
,我很困惑。Counting instances of values in an object
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;
}, {});
// countedNames is:
// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }
allNames[name] = 1
将name
的内容作为新属性添加到allNames
中,并立即将值1
存储在该新添加的属性中 -> 使用对象 - JavaScript | MDN - Andreas{}['Alice'] = 1
;{}
是一个空对象。['Alice']
获取或设置该对象上命名为"Alice"的属性(在这种情况下,因为有= 1
,所以是设置)。= 1
将属性设置为1。因此,该操作的结果是具有Alice属性等于1的对象,即{ Alice: 1 }
。 - Heretic Monkey