Sum javascript object property在对象数组中具有相同对象propertyB的值如何获取javascript对象数组,例如:my objArr = [{key:Mon Sep 23 2013 00:00:00 GMT-0400, val:42},{key:Mon Sep 24 2013 00:00:00 GMT-0400, val:78},{key:Mon Sep 25 2013 00:00:00 GMT-0400, val:23},{key:Mon Sep 23 2013 00:00:00 GMT-0400, val:54}]并通过对值进行求和来合并重复键。为了得到这样的东西:my reducedObjArr = [{key:Mon Sep 23 2013 00:00:00 GMT-0400, val:96},{key:Mon Sep 24 2013 00:00:00 GMT-0400, val:78},{key:Mon Sep 25 2013 00:00:00 GMT-0400, val:23}]我已经尝试迭代并添加到一个新数组,但这不起作用:var reducedObjArr = [];var item = null, key = null;for(var i=0; i<objArr.length; i++) { item=objArr[i]; key = Object.keys(item)[0]; item=item[key]; if(!result[key]){ result[key] = item; }else{ result[key] += item;} }a
3 回答

慕哥6287543
TA贡献1831条经验 获得超10个赞
let objArr = [ {key: 'Mon Sep 23 2013 00:00:00 GMT-0400', val: 42}, {key: 'Mon Sep 24 2013 00:00:00 GMT-0400', val: 78}, {key: 'Mon Sep 25 2013 00:00:00 GMT-0400', val: 23}, {key: 'Mon Sep 23 2013 00:00:00 GMT-0400', val: 54}];// first, convert data into a Map with reducelet counts = objArr.reduce((prev, curr) => { let count = prev.get(curr.key) || 0; prev.set(curr.key, curr.val + count); return prev;}, new Map());// then, map your counts object back to an arraylet reducedObjArr = [...counts].map(([key, value]) => { return {key, value}})console.log(reducedObjArr);
添加回答
举报
0/150
提交
取消