请有人详细解释一下这个片段
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 }
答案 0 :(得分:1)
为了更清楚,这里将相同的代码从功能转换为程序
const names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
const countedNames = {};
for (let i = 0; i < names.length; i++) {
let name = names[i];
// if exists increment, else set to 1
if (countedNames[name] != null) {
countedNames[name]++;
} else {
countedNames[name] = 1;
}
}
console.log(countedNames);
在reduce {}
中是初始值,然后数组的每个元素都通过reduce函数来修改最终值。