gpt4 book ai didi

javascript - 如何删除数组中对象的重复值?

转载 作者:行者123 更新时间:2023-12-02 23:58:06 25 4
gpt4 key购买 nike

我找到了一些关于如何删除对象中重复值的引用资料,例如 this , this , this ...在所有这些示例(以及我发现的其他示例)中都是针对简单对象,但我的情况更加“复杂”。

我有一个数组,其中每个索引都有您的值和一个对象。我创建了一个简单的示例来进行解释:

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"
}
]
}
]

您可以看到,在我的 item 对象中,我有重复的值...我想删除我的对象中的重复值。

实现此目的的一种方法(我认为)是复制我的列表并使用 forEach/map/filter 但我不知道该怎么做。

我尝试过这个,但不起作用:

let dataCopy = data;

dataCopy.forEach(dataItem => {
listPrev.forEach(dataPrev => {

//??

//and or...
if(dataPrev.item.id == dataItem.item.id){
//??

}
})
})

我正在尝试获得这样的返回:

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"
}
]
}
]

我该怎么做?有人可以帮助我吗?

最佳答案

简单的forEachfilter就可以了:

data.forEach(d => {
d.item = d.item.filter((item, index, self) => {
return index === self.findIndex(z => z.id == item.id)
});
});

关于javascript - 如何删除数组中对象的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55288292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com