我有一个名为
的用户数组var users = [{'name':'zulekha'}, {'name':'deepika'}];
我从jira API获取每个用户的工作日志。所以我得到这样的对象。
var worklogResult = {
"issues": [
{
"fields": {
"worklog": {
"worklogs": [
{
"author": {
"name": "zulekha",
},
"timeSpentSeconds": 180
},
{
"author": {
"name": "deepika",
},
"timeSpentSeconds": 210
}
]
}
}
},
{
"fields": {
"worklog": {
"worklogs": [
{
"author": {
"name": "deepika",
},
"timeSpentSeconds": 140
}
]
}
}
},
{
"fields": {
"worklog": {
"worklogs": [
{
"author": {
"name": "zulekha",
},
"timeSpentSeconds": 600,
}
]
}
}
},
{
"fields": {
"worklog": {
"worklogs": []
}
}
}
]
}
现在我想将 worklogResult 与用户匹配,以便我可以获得以下输出。
output = [{'name':'zulekha','timeSpentSeconds':780},{'name':'deepika','timeSpentSeconds':350}]
有谁能建议我如何实现这个目标?
答案 0 :(得分:1)
使用_.flatMap
来平展嵌套对象
_.chain(worklogResult.issues)
.flatMap('fields.worklog.worklogs')
.thru(function(spents) {
return _.map(users, function(user) {
return _.merge(user, {
timeSpentSeconds: _.chain(spents)
.filter(['author.name', user.name])
.map('timeSpentSeconds')
.sum()
.value()
})
})
})
.value()