I need to understand the simplest way of doing this. I've got an array of objects:
const data =
[
{
"_id": "63613c9d1298c1c70e4be684",
"NameFood": "Coca",
"count": 2
},
{
"_id": "63621f10b61f259b13cafe8e",
"NameFood": "Xa xi",
"count": 2,
},
{
"_id": "63654bf94b61091ae9c4bfd3",
"NameFood": "Cafe đen",
"count": 2,
},
{
"count": 1,
"_id": "63613c9d1298c1c70e4be684",
"NameFood": "Coca",
}
]
I expect the result: filter duplicate values by _Id and plus 'count'
const data =
[
{
"_id": "63613c9d1298c1c70e4be684",
"NameFood": "Coca",
"count": 3
},
{
"_id": "63621f10b61f259b13cafe8e",
"NameFood": "Xa xi",
"count": 2,
},
{
"_id": "63654bf94b61091ae9c4bfd3",
"NameFood": "Cafe đen",
"count": 2,
},
]
Can anybody explain it to me step by step, please?
Just using reduce()
can do it
const data =
[
{
"_id": "63613c9d1298c1c70e4be684",
"NameFood": "Coca",
"count": 2
},
{
"_id": "63621f10b61f259b13cafe8e",
"NameFood": "Xa xi",
"count": 2,
},
{
"_id": "63654bf94b61091ae9c4bfd3",
"NameFood": "Cafe đen",
"count": 2,
},
{
"count": 1,
"_id": "63613c9d1298c1c70e4be684",
"NameFood": "Coca",
}
]
let result = data.reduce((a,c) =>{
let obj = a.find(i => i._id == c._id)
if(obj){
obj.count += c.count
}else{
a.push(c)
}
return a
},[])
console.log(result)