javascript | Object grouping
grouping, javascript, merge, object
Solution
Try with something like this:
function groupBy(collection, property) {
var i = 0, val, index,
values = [], result = [];
for (; i < collection.length; i++) {
val = collection[i][property];
index = values.indexOf(val);
if (index > -1)
result[index].push(collection[i]);
else {
values.push(val);
result.push([collection[i]]);
}
}
return result;
}
var obj = groupBy(list, "group");
Keep in mind that `Array.prototype.indexOf` isn't defined in IE8 and older, but there are common polyfills for that.
Problem
I have an object. It looks like below: ``` [ { "name":"Display", "group":"Technical detals", "id":"60", "value":"4" }, { "name":"Manufacturer", "group":"Manufacturer", "id":"58", "value":"Apple" }, { "name":"OS", "group":"Technical detals", "id":"37", "value":"Apple iOS" } ] ``` I would like to group this data by group field and get this object: ``` var obj = { 0 = [ { 'group' = 'Technical detals', 'name' = 'Display', 'id' = '60', 'value' = '4' }, { 'group' = 'Technical detals', 'name' = 'OS', 'id' = '37', 'value' = 'Apple iOS' }], 1 = [ { 'group' = 'Manufacturer', 'name' = 'Manufacturer', 'id' = '58', 'value' = 'Apple' }] } ``` How can I group my first object?