Write groupBy(items, key) that returns an object grouping the array of objects by the given property. groupBy([{t:"a",v:1},{t:"b",v:2},{t:"a",v:3}], "t") should give {a:[{t:"a",v:1},{t:"a",v:3}], b:[{t:"b",v:2}]}.
function groupBy(items, key) {
// your code here
}
Rules:
Plain JavaScript, no libraries
Do not mutate the input array
Post your solution as a reply. Answer goes up in about a day.
Challenge solution: The task requires grouping an array of objects by a specified key into a new object.
One way to do it:
function groupBy(items, key) {
const result = {};
for (const item of items) {
const keyValue = item[key];
if (!result[keyValue]) {
result[keyValue] = [];
}
result[keyValue].push(item);
}
return result;
}
Why:
This solution iterates through each item in the input array. For each item, it accesses the value associated with the given key. It then uses this value as a key in the result object, pushing the current item into the corresponding array. If an array for that key does not yet exist, it initializes an empty array first.