This question already has answers here:
Sum similar keys in an array of objects [closed]
                                
                                    (5个答案)
                                
                        
                2年前关闭。
            
        

我有一个这样的对象数组:

[
  {
    id:1,
    val: 5
  },
  {
    id:1,
    val: 5
  },
  {
    id:2,
    val: 6
  },
  {
    id:2,
    val: 7
  }
]


我想要这样的东西

[
  {
    id:1,
    val: 10
  },
  {
    id:2,
    val: 13
  },
]


我怎样才能做到这一点?

最佳答案

var t=[
  {
    id:1,
    val: 5
  },
  {
    id:1,
    val: 5
  },
  {
    id:2,
    val: 6
  },
  {
    id:2,
    val: 7
  }
]

t.reduce((acc,elem)=>{
    if(acc.filter((elemi)=>elemi.id==elem.id)[0])acc.filter((elemi)=>elemi.id==elem.id)[0].val+=elem.val;
    else acc.push(elem);
    return acc
}
,[])

关于javascript - 如何合并包含相同ID的对象数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47650380/

10-12 14:21