合并数组属性相同项

var data= [
  {
    type: '1',
    name: 'apple',
    number: 14
  },
  {
    typeId: '2',
    name: 'apple',
    number: 16
  },
  {
    typeId: '3',
    name: 'apple',
    number: 10
  },
  {
    typeId: '4',
    name: 'banana',
    number: 4
  },
  {
    typeId: '5',
    name: 'banana',
    number: 21
  },
  {
    typeId: '6',
    name: 'pear',
    number: 3
  },
  {
    typeId: '7',
    name: 'pear',
    number: 13
  },
  {
    typeId: '8',
    name: 'cherry',
    number: 32
  }  
]

转换成

arr = [
{
    typeId: '8',
    name: 'cherry',
    number: 32
  },
  {
    typeId: '',
    name: 'pear',
    number: 16
  },
  {
    typeId: '',
    name: 'banana',
    number: 25
  },
  {
    typeId: '',
    name: 'apple',
    number: 40
  }
]

把 数组 data中的子对象中 name属性相同的子对象的 number 合并,得到一个新的对象,从而返回一个新数组 arr, 有哪些比较好的方法?

阅读 1.8k
1 个回答
data.reduce((prev, item, index)=>{
    const sameNameItem = prev.find(v => v.name === item.name)
    if (sameNameItem) {
        sameNameItem.typeId = ''
        sameNameItem.number = sameNameItem.number + item.number
    } else {
        prev.push(item)
    }
    return prev
},[])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题