I found several references about how to delete duplicate values in object like this, this, this... In all these examples (and in others that I've found) are for simple objects, but my case is more "complex".
I have an array where each index has your values and an object inside. I create a simple example for explanation:
var data = [
{
"name": "Kyle",
"item": [
{
"id": 1,
"name": "name1"
},
{
"id": 2,
"name": "name2"
},
{
"id": 3,
"name": "name3"
},
{
"id": 2,
"name": "name2"
}
{
"id": 3,
"name": "name3"
}
]
},
{
"name": "Liza",
"item": [
{
"id": 1,
"name": "name1"
},
{
"id": 1,
"name": "name1"
},
{
"id": 2,
"name": "name2"
}
]
},
{
"name": "John",
"item": [
{
"id": 1,
"name": "name1"
},
{
"id": 1,
"name": "name1"
},
{
"id": 4,
"name": "name4"
},
{
"id": 4,
"name": "name4"
},
{
"id": 2,
"name": "name2"
}
]
},
{
"name": "Melissa",
"item": [
{
"id": 2,
"name": "name2"
}
]
}
]
How you can see, inside my item
objects I've duplicate values... I would like to remove this duplicate values inside my objects.
One way to do this (which I thought) was do it making a copy of my list and using a forEach
/map
/filter
but I don't know how to do it.
I tried this, but not works:
let dataCopy = data;
dataCopy.forEach(dataItem => {
listPrev.forEach(dataPrev => {
//??
//and or...
if(dataPrev.item.id == dataItem.item.id){
//??
}
})
})
I'm trying to get this kind of return:
var data = [
{
"name": "Kyle",
"item": [
{
"id": 1,
"name": "name1"
},
{
"id": 2,
"name": "name2"
},
{
"id": 3,
"name": "name3"
},
]
},
{
"name": "Liza",
"item": [
{
"id": 1,
"name": "name1"
}
{
"id": 2,
"name": "name2"
}
]
},
{
"name": "John",
"item": [
{
"id": 1,
"name": "name1"
},
{
"id": 4,
"name": "name4"
},
{
"id": 2,
"name": "name2"
}
]
},
{
"name": "Melissa",
"item": [
{
"id": 2,
"name": "name2"
}
]
}
]
How I can do it? Someone can help me?
Simple forEach
and filter
will do:
data.forEach(d => {
d.item = d.item.filter((item, index, self) => {
return index === self.findIndex(z => z.id == item.id)
});
});
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments