【发布时间】:2021-10-16 06:56:06
【问题描述】:
我有一个data json 对象,其结构如下:
data: [{
"aggregate": {
"path": "/home/page1",
"query": "name=todd"
},
"visits": 4,
"clicks": 7
},{
"aggregate": {
"path": "/home/page1",
"query": "name=matt"
},
"visits": 5,
"clicks": 17
},{
"aggregate": {
"path": "/home/page2",
"query": ""
},
"visits": 4,
"clicks": 7
},{
"aggregate": {
"path": "/home/page3",
"query": "term=dig"
},
"visits": 2,
"clicks": 20
},{
"aggregate": {
"path": "/home/page1",
"query": "term=dug"
},
"visits": 2,
"clicks": 11
}]
我希望得到一个像这样的 aggregatedObject 对象:
[{
"path": "/home/page1",
"visits": 9,
"clicks": 24
},{
"path": "/home/page2",
"visits": 4,
"clicks": 7
},{
"path": "/home/page1",
"visits": 4,
"clicks": 31
}]
这是我目前所拥有的:
let aggregatedObject = [];
_.each(data, function (item) {
if (!_.find(aggregatedObject, { path: item.aggregate.path })) {
aggregatedObject.push({
path: item.aggregate.path,
visits: item.visits,
clicks: item.clicks
});
//console.log('not found');
} else {
// so lost here
}
});
我想要做的是,如果我的新对象没有与我当前正在迭代的项目匹配的项目,我将其推送到新对象。到目前为止,我可以成功地做到这一点。
但是,如果我确实找到了与我的新对象中的路径匹配的项目(忽略查询),我不知道如何使用现有项目的访问和点击的总和以及我正在更新的项目遍历。
【问题讨论】:
标签: javascript json lodash