【发布时间】:2020-01-21 05:37:36
【问题描述】:
我的数据库中有一组对象数据,这是我的数据:
const data = [
{
'partnerId': 1,
'partnerName': 'Company1',
'timeInt': 0,
'duration': '0 days',
'statusRanking': 'equal',
'totalProject': 2
},
{
'partnerId': 2,
'partnerName': 'Company2',
'timeInt': 0,
'duration': '0 days',
'statusRanking': 'equal',
'totalProject': 1
},
{
'partnerId': 2,
'partnerName': 'Company2',
'timeInt': 2,
'duration': '2 days',
'statusRanking': 'equal',
'totalProject': 2
},
{
'partnerId': 1,
'partnerName': 'Company1',
'timeInt': 3,
'duration': '3 days',
'statusRanking': 'equal',
'totalProject': 5
},
{
'partnerId': 2,
'partnerName': 'Company2',
'timeInt': 5,
'duration': '5 days',
'statusRanking': 'equal',
'totalProject': 2
},
{
'partnerId': 1,
'partnerName': 'Company1',
'timeInt': 18,
'duration': '18 days',
'statusRanking': 'equal',
'totalProject': 6
}
];
我怎样才能使它们独一无二?(基于 partnerId 键的唯一性)然后根据 timeInt 和 totalProject 键求和?
预期结果:
const data = [
{
'partnerId': 1,
'partnerName': 'Company1',
'timeInt': 21,
'duration': '21 days',
'statusRanking': 'equal',
'totalProject': 13
},
{
'partnerId': 2,
'partnerName': 'Company2',
'timeInt': 7,
'duration': '7 days',
'statusRanking': 'equal',
'totalProject': 5
}
];
我已经试过了:
let a = data.reduce((acc, x) => acc.concat(acc.find(y => y.partnerId === x.partnerId) ? [] : [x]), []);
但这只是为了唯一,而不是求和 timeInt 和 totalProject 键。
有什么解决办法吗? 谢谢。
【问题讨论】:
标签: javascript arrays node.js ecmascript-6 reduce