I am trying to loop through a array ob objects and group the items of the array into new arrays that have matching id:
API example:
api_array [
Similar to your reduce
example, this iterates over the data and creates a object using the object ids as keys and grouping them together. It then grabs the values from that object.
const api_array = [{id: 1, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 1, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 1, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 2, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 2, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 2, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 3, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 3, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 3, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 4, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 4, postcode: 'xxx', street: 'xxx', city: 'xxx'},{id: 4, postcode: 'xxx', street: 'xxx', city: 'xxx'}];
const out = Object.values(api_array.reduce((acc, c) => {
const { id } = c;
// If the object doesn't have a key that matches the id
// create an array as its value and then concat the current object
// to it, otherwise, if the key exists just concat the current object
// to the existing array
acc[id] = (acc[id] || []).concat(c);
return acc;
}, {}));
console.log(out)