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 [
You could take a Map for grouping same id
and get the values from the map as result set.
The result set has the same order of the wanted keys.
function groupBy(array, key) {
return Array.from(array
.reduce((m, o) => m.set(o[key], [...(m.get(o[key]) || []), o]), new Map)
.values()
);
}
var data = [{ 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' }],
grouped = groupBy(data, 'id');
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }