js object相加_js 对象数组属性相同的值合并相加

对象数组根据某一相同项示例为travelerEmpNum,合并其他属性为一个数组,主要包括对象数组根据某一相同项合并其他属性为一个数组,为项目需求
对象数组示例

let rows = [

{

"travelerName":"王晓&陈辰",

"travelerEmpNum":"1001&1002",

"expenseAmountTotal":1381,

"invoiceAmountTotal":1381

},

{

"travelerName":"王晓",

"travelerEmpNum":"1001",

"expenseAmountTotal":100,

"invoiceAmountTotal":100

},

{undefined

"travelerName":"王晓",

"travelerEmpNum":"1001",

"expenseAmountTotal":306,

"invoiceAmountTotal":306

}

],

合并后的结果

[

{
expenseAmountTotal: 1381,
invoiceAmountTotal: 1381,
travelerEmpNum: "1001&1002",
travelerName: "王晓&陈辰",
travelers: " 王晓 | 1001, 陈辰 | 1002",
},
{
expenseAmountTotal: 406,
invoiceAmountTotal: 406,
travelerEmpNum: "1001",
travelerName: "王晓",
travelers: " 王晓 | 1001",
},

]

实现方法

let result = rows.reduce((items, item) => { // 将相同属性相加并合并去重  (item.xx==arrItem.xx&&....)
let findData= items.find(arrItem => item.travelerEmpNum === arrItem.travelerEmpNum)
if (findData) {
findData.invoiceAmountTotal += item.invoiceAmountTotal
findData.expenseAmountTotal += item.expenseAmountTotal
} else {
//不要直接在原来的对象修改,新建对象
let newItem = {
expenseAmountTotal: item.expenseAmountTotal,
invoiceAmountTotal: item.invoiceAmountTotal,
travelerEmpNum: item.travelerEmpNum,
travelerName: item.travelerName,
}
items.push(newItem )
}
return items

},[])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值