如下代码中,根据我自己写的方法进行合并,得到的结果并不是我想要的,我该如何进行修改和完善才能得到想要的结果呢?
先看我的代码:
var prd = {
"id": 1,
"department_id": 42,
"products": [{
"id": 12,
"item_id": 676,
"name": "49da",
"price": 78,
"grouped_addons": [{
"addons": [{
"id": "0_0_40",
"name": "rice",
"qty": 0,
"unit_price": "5.00"
},
{
"id": "0_0_41",
"name": "what",
"qty": 1,
"unit_price": "15.00"
}
]
}]
},
{
"id": 12,
"name": "49da",
"price": 90,
"item_id": 677,
"grouped_addons": [{
"addons": [{
"id": "0_0_40",
"name": "rice",
"qty": 0,
"unit_price": "5.00"
}, {
"id": "0_0_41",
"name": "what",
"qty": 1,
"unit_price": "15.00"
}]
}]
},
{
"id": 42,
"name": "345dd",
"item_id": 678,
"grouped_addons": [{
"addons": [{
"id": "0_0_42",
"name": "rice",
"qty": 0,
"unit_price": "5.00"
}, {
"id": "0_0_43",
"name": "what",
"qty": 1,
"unit_price": "15.00"
}]
}]
},
{
"id": 48,
"name": "33ffg",
"item_id": 679,
"price": 90,
"grouped_addons": [{
"addons": [{
"id": "0_0_44",
"name": "rice",
"qty": 0,
"unit_price": "5.00"
}, {
"id": "0_0_45",
"name": "what",
"qty": 1,
"unit_price": "15.00"
}]
}]
},
{
"id": 48,
"name": "33ffg",
"item_id": 680,
"price": 100,
"grouped_addons": [{
"addons": [{
"id": "0_0_44",
"name": "rice",
"qty": 4,
"unit_price": "5.00"
}, {
"id": "0_0_45",
"name": "what",
"qty": 3,
"unit_price": "15.00"
}]
}]
},
{
"id": 48,
"name": "33ffg",
"price": 200,
"item_id": 681,
"grouped_addons": [{
"addons": [{
"id": "0_0_44",
"name": "rice",
"qty": 4,
"unit_price": "5.00"
}, {
"id": "0_0_45",
"name": "what",
"qty": 1,
"unit_price": "15.00"
}]
}]
}
]
}
var mp = prd.products.reduce((obj, item) => {
if (!obj[item.id]) {
obj[item.id] = [item]
} else {
obj[item.id].push(item)
}
return obj
}, {})
let cv = Object.keys(mp).map(id => {
return mp[id].reduce((state, item) => {
console.log('item',item)
if(JSON.stringify(item.grouped_addons)===JSON.stringify(state.grouped_addons)){
state.price += item.price
}
return state
})
})
console.log(JSON.stringify(cv))
我想要的最终结果应该是如下,只合并grouped_addons相同的item,不相同的不进行合并:
[{
"id": 12,
"item_id": 676,
"name": "49da",
"price": 168,
"grouped_addons": [{
"addons": [{
"id": "0_0_40",
"name": "rice",
"qty": 0,
"unit_price": "5.00"
},
{
"id": "0_0_41",
"name": "what",
"qty": 1,
"unit_price": "15.00"
}
]
}]
},
.......
通过努力已经解决了