Sum javascript object property在对象数组中具有相同对象property


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


陪伴而非守候
浏览 383回答 3
3回答

慕哥6287543

您可以直接使用map并减少:而不是使用for循环和推送值。let&nbsp;objArr&nbsp;=&nbsp;[ &nbsp;&nbsp;{key:&nbsp;'Mon&nbsp;Sep&nbsp;23&nbsp;2013&nbsp;00:00:00&nbsp;GMT-0400',&nbsp;val:&nbsp;42}, &nbsp;&nbsp;{key:&nbsp;'Mon&nbsp;Sep&nbsp;24&nbsp;2013&nbsp;00:00:00&nbsp;GMT-0400',&nbsp;val:&nbsp;78}, &nbsp;&nbsp;{key:&nbsp;'Mon&nbsp;Sep&nbsp;25&nbsp;2013&nbsp;00:00:00&nbsp;GMT-0400',&nbsp;val:&nbsp;23}, &nbsp;&nbsp;{key:&nbsp;'Mon&nbsp;Sep&nbsp;23&nbsp;2013&nbsp;00:00:00&nbsp;GMT-0400',&nbsp;val:&nbsp;54}];//&nbsp;first,&nbsp;convert&nbsp;data&nbsp;into&nbsp;a&nbsp;Map&nbsp;with&nbsp;reducelet&nbsp;counts&nbsp;=&nbsp;objArr.reduce((prev,&nbsp;curr)&nbsp;=>&nbsp;{ &nbsp;&nbsp;let&nbsp;count&nbsp;=&nbsp;prev.get(curr.key)&nbsp;||&nbsp;0; &nbsp;&nbsp;prev.set(curr.key,&nbsp;curr.val&nbsp;+&nbsp;count); &nbsp;&nbsp;return&nbsp;prev;},&nbsp;new&nbsp;Map());//&nbsp;then,&nbsp;map&nbsp;your&nbsp;counts&nbsp;object&nbsp;back&nbsp;to&nbsp;an&nbsp;arraylet&nbsp;reducedObjArr&nbsp;=&nbsp;[...counts].map(([key,&nbsp;value])&nbsp;=>&nbsp;{ &nbsp;&nbsp;return&nbsp;{key,&nbsp;value}})console.log(reducedObjArr);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript