gpt4 book ai didi

Javascript reduce initialValue 是空对象,它是什么意思?

转载 作者:行者123 更新时间:2023-12-03 07:07:54 24 4
gpt4 key购买 nike

在 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 }

最佳答案

Array#reduce 是一个聚合或累加器函数。这意味着它需要一组项目( names )并将其归结为单个“累积”值( allNames )。

names.reduce(function (allNames, name) {  // `allNames` is the accumulated value, `name` is the current item in `names`
if (name in allNames) {
allNames[name]++;
}
else {
allNames[name] = 1;
}
return allNames;
}, {}); // The empty object here is the initial value of the accumulated value
所以这个函数创建了一个累积值,它是一个对象,其键对应于 names 中的每个名称。 ,以及对应于 name 的频率的值在 names .
最后:请注意,对象具有用于属性访问/创建的索引符号(非常类似于数组!)。所以下面的意思是“如果对象 allNames 上不存在这样的属性,请创建一个名称为变量 name 值的属性,并将值 1 分配给它的值:
allNames[name] = 1

关于Javascript reduce initialValue 是空对象,它是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64225889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com