Пожалуйста, объясните код и уточните, что скрывается за кодом.
Я путаюсь с частью if(! acc[key])
. Означает ли это, что если ключ не в acc и установить ключ с массивом значений, выпрыгнуть из оператора if и вставить obj в значение ключа acc?
В случае, если ключ находится в соответствии, пропустите оператор if и используйте другую память acc[key]
и установите ключ в соответствии и установите значение с помощью 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))