有时候,某个请求返回的数据是很杂乱的,需要按照一些规则重新排列组合。
例:这样的数据:
var list=[ {"companyId":1,"companyName":"公司一","name":"张春"}, {"companyId":1,"companyName":"公司一","name":"王夏"}, {"companyId":2,"companyName":"公司二","name":"李秋"}, {"companyId":2,"companyName":"公司二","name":"赵冬"}, {"companyId":3,"companyName":"公司三","name":"刘季"} ]
现在想按照公司来处理,把相同id的公司中的人员放在一个数组中,最后的结果是,有多少个公司,就返回多少个数组。
可以这样操作:
var list=[ {"companyId":1,"companyName":"公司一","name":"张春"}, {"companyId":1,"companyName":"公司一","name":"王夏"}, {"companyId":2,"companyName":"公司二","name":"李秋"}, {"companyId":2,"companyName":"公司二","name":"赵冬"}, {"companyId":3,"companyName":"公司三","name":"刘季"} ] var listNew = []; list.forEach(function(el){ for(var i=0;i<listNew.length;i++){ if(listNew[i].companyId == el.companyId){ listNew[i].people.push({ name: el.name }); return; } } listNew.push({ companyId: el.companyId, companyName: el.companyName, people: [{ name: el.name }] }); }); console.log(listNew);
结果为:
这样的结果符合要求。