【发布时间】:2017-08-18 05:43:32
【问题描述】:
我有一个对象数组,我想根据两个键对其对象进行分组
var arr = [
{"name": "apple", "id": "apple_0","c":'20'},
{"name": "dog", "id": "dog_1","c":'10'},
{"name": "apple", "id": "apple_0","c":'30'},
{"name": "dog", "id": "dog_1","c":'10'},
];
我期待结果
var final = [
{"name": "apple", "id": "apple_0","c":'50'},
{"name": "dog", "id": "dog_1","c":'20'}
];
场景是这样的——我想根据name 和id 对对象进行分组。如果在最终数组中找到name 和id,则对其c 求和。
我试过了:
var final = [];
for(var i = 0; i<arr.length; i++){
var obj = {};
obj = arr[i];
for(var j = 0; j<final.length; j++){
if((obj[name] !== final[j].name) && (obj[id] !== final[j].id)){
final.push(obj)
}else{
//addition of key `c` in existing object in `final` array
}
}
}
但是内部 for 循环不起作用,并且由于连续循环执行而导致我的系统挂起。
请让我知道如何修复它或任何其他逻辑以获得最终结果。
【问题讨论】:
-
哦...谢谢@Teemu
-
如果
final数组开始为空,for(var j = 0; j < final.length; j++)将如何工作? -
那么,在这种情况下该怎么办? @非破坏性
-
我应该在
for(var j = 0; j < final.length; j++)之前做if(final.length === 0){final.push(obj)}吗???
标签: javascript arrays object grouping