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, 有哪些比较好的方法?

回答

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
},[])

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up