如何在javascript中的对象数组中分组和添加它们的值?
我的angular应用程序中有这样的响应。我必须减少代码 我需要最后的回应,就像 您可以使用一个简单的reduce操作: var res=[ {url:/page1,视图:2}, {url:/page2,视图:1}, {url:/page1,视图:10}, {url:/page2,视图:4}, {url:/page3,视图:1}, {url:/page2,视图:0}, {url:/page3,视图:14}, {url:/page1,视图:04}, {url:/page3,视图:14}, ]; res=res.reduceval,acc=>{ 如果acc.somee=>e.url==val.url{ acc.finde=>e.url==val.url.views+=val.views; }否则{ 加速推{ url:val.url, 视图:val.views, }; } 返回acc; }, []; console.logres 使用数组reduce 节点CLI的输出:如何在javascript中的对象数组中分组和添加它们的值?,javascript,arrays,angular,typescript,object,Javascript,Arrays,Angular,Typescript,Object,我的angular应用程序中有这样的响应。我必须减少代码 我需要最后的回应,就像 您可以使用一个简单的reduce操作: var res=[ {url:/page1,视图:2}, {url:/page2,视图:1}, {url:/page1,视图:10}, {url:/page2,视图:4}, {url:/page3,视图:1}, {url:/page2,视图:0}, {url:/page3,视图:14}, {url:/page1,视图:04}, {url:/page3,视图:14}, ];
> var result = res.reduce((accu, obj) => { accu[obj.url] = (accu[obj.url] || 0) + obj.views; return accu; }, {});
undefined
> result
{ '/page1': 16, '/page2': 5, '/page3': 29 }
接受的答案返回一个对象。您可以使用以下方法获得所需的输出: const res=[{url:/page1,视图:2},{url:/page2,视图:1},{url:/page1,视图:10},{url:/page2,视图:4},{url:/page3,视图:1},{url:/page2,视图:0},{url:/page3,视图:14},{url:/page1,视图:04},{url:/page3,视图:14}, merged=res.reduceac,{url,views}=>{ acc[url]=acc[url]|{url,视图:0} acc[url]。视图+=视图; 返回acc; }, {}, 输出=对象。值合并
console.logoutput欢迎使用堆栈溢出!请注意,这是一个问答网站,而不是一个代码编写服务。另请参见如何.RTFM接受的答案返回一个对象,而不是问题中提到的数组输出
res=[
{ "url": "/page1", "views": 104 },
{ "url": "/page2", "views": 104 },
{ "url": "/page3", "views": 104 },
]
var result = res.reduce((accu, obj) => {
accu[obj.url] = (accu[obj.url] || 0) + obj.views;
return accu;
},
{}
);
> var result = res.reduce((accu, obj) => { accu[obj.url] = (accu[obj.url] || 0) + obj.views; return accu; }, {});
undefined
> result
{ '/page1': 16, '/page2': 5, '/page3': 29 }