如何在javascript中的对象数组中分组和添加它们的值?

如何在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}, ];

我的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的输出:

> 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 }