请解释代码并详细说明代码背后运行的内容。
我对 if 部分感到困惑if(! acc[key])
。这是否意味着如果键不在 acc 中并使用值数组设置键并跳出 if 语句并将 obj 推送到 acc 键值中?
如果键在 acc 中,则跳过 if 语句并使用另一个内存acc[key]
并设置 acc 中的键并使用 obj 设置值。
我的解释正确吗?
var people = [{
name: 'Alice',
age: 21
},
{
name: 'Max',
age: 20
},
{
name: 'Jane',
age: 20
}
];
function groupBy(objectArray, property) {
return objectArray.reduce(function(acc, obj) {
var key = obj[property];
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(obj)
return acc;
}, {});
}
var groupedPeople = groupBy(people, 'age')
console.log(JSON.stringify(groupedPeople))