Javascript function : groupby
자바스크립트에서 object array의 groupby
var data = [
{"name":"a","age":"10"}
,{"name":"b","age":"10"}
,{"name":"a","age":"30"}
,{"name":"a","age":"100"}
,{"name":"a","age":"100"}
,{"name":"b","age":"30"}
];
$.each(data, function(){
console.log("key="+this.name+" val="+this.age);
});
var data2 = groupByName(data);
console.log("---> after");
$.each(data2, function(){
console.log("key="+this.name+" val="+this.age);
});
//grouping key word를 받도록 개선할 수 있을듯하다
//현재버전은 grouping key는 고정
//underscore.js 라는 library 에서 확장기능을 제공해준다
function groupByName(obj){
var result = new Array();
$.each(obj, function(){
var idx = result.map(function(x){return x.name;}).indexOf(this.name);
if(idx==-1){
result.push(this);
}else{
result[idx].age = parseInt(result[idx].age) + parseInt(this.age);
}
});
return result;
}