javascript for group object properties based on another property
var list = [
{ date: "2017-01-01",
type: "type1",
amount: 100
},
{ date: "2017-01-01",
type: "type2",
amount: 150
},
{ date: "2017-01-02",
type: "type1",
amount: 200
}]
var dateArrKeyHolder = [];
var dateArr = [];
list.forEach(function(item){
dateArrKeyHolder[item.date] = dateArrKeyHolder[item.date]||{};
var obj = dateArrKeyHolder[item.date];
if(Object.keys(obj).length == 0)
dateArr.push(obj);
obj.date = item.date;
obj.activities = obj.activities || [];
obj.activities.push({type:item.type, amount: item.amount });
});
console.log(JSON.stringify(dateArr));
/* Result:
[{"date":"2017-01-01","activities":[{"type":"type1","amount":100},{"type":"type2","amount":150}]},
{"date":"2017-01-02","activities":[{"type":"type1","amount":200}]}]
*/