来自mdn的reduce示例的说明

时间:2018-05-10 19:08:24

标签: javascript arrays

请有人详细解释一下这个片段

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 }

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函数来修改最终值。