gpt4 book ai didi

javascript - 根据多个属性(但不是全部)删除重复项

转载 作者:行者123 更新时间:2023-12-02 14:54:47 26 4
gpt4 key购买 nike

给定一个对象数组和一个对象,看起来像这样:

var historyList = [
{ id: 1, name: 'Donna', data: 'phone: 903489349'},
{ id: 2, name: 'Amy', data: 'address: Street 1'},
{ id: 1, name: 'Amy', data: 'address: Street 2'}
]

var newHistoryObject = { id: 1, name: 'Amy', data: 'phone: 03492'}

我想从数组中删除具有相同 id 的任何对象相同name作为newHistoryObject

我尝试过使用 lodash isEqual,但这当然不起作用,因为还有其他属性可能不同。

我也尝试过这样的:

var temp = _.filter(historyList, function(item) {
if (newHistoryObject.name !== item.name &&
newHistoryObject.id !== item.id) {
return item;
}
});

这不起作用。它只保留此处重复的对象,并丢弃其他对象。

我想要的结果是一个数组,其中任何具有相同 name 的对象和id作为“外部”对象,在本例中如下所示:

var temp = [
{ id: 1, name: 'Donna', data: 'phone: 903489349'},
{ id: 2, name: 'Amy', data: 'address: Street 1'}
]

最佳答案

这是一个纯 Javascript 解决方案,带有临时对象 thisArray#filter() .

var historyList = [{ id: 1, name: 'Donna', data: 'phone: 903489349' }, { id: 2, name: 'Amy', data: 'address: Street 1' }, { id: 1, name: 'Amy', data: 'address: Street 2' }],
newHistoryObject = { id: 1, name: 'Amy', data: 'phone: 03492' },
filtered = historyList.filter(function (a) {
return a.id !== this.id || a.name !== this.name;
}, newHistoryObject);

document.write('<pre>' + JSON.stringify(filtered, 0, 4) + '</pre>');

关于javascript - 根据多个属性(但不是全部)删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35911103/

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