i am wonder what this line in code do:
(result[obj[key]] = result[obj[key]] || []).push(obj);
What it exactly means? If x = x or [] add object to the list?
Whole code with output:
const people = [
{
name: "Rohan",
age: 18
},
{
name: "Mohan",
age: 19
},
{
name: "Shawn",
age: 20
},
{
name: "Michael",
age: 21
},
{
name: "David",
age: 22
},
];
let groupBy = (array, key) => {
return array.reduce((result, obj) => {
(result[obj[key]] = result[obj[key]] || []).push(obj);
return result;
}, {});
};
console.log(groupBy(people, "age"));
Output:
{
'18': [ { name: 'Rohan', age: 18 } ],
'19': [ { name: 'Mohan', age: 19 } ],
'20': [ { name: 'Shawn', age: 20 } ],
'21': [ { name: 'Michael', age: 21 } ],
'22': [ { name: 'David', age: 22 } ]
}