gpt4 book ai didi

javascript - 如何在某些条件下从列表中删除重复项,underscore.js?

转载 作者:行者123 更新时间:2023-11-29 21:53:29 26 4
gpt4 key购买 nike

我尝试通过电子邮件删除重复的对象,但有一些条件。

考虑我有以下对象列表:

var contacts = [{
"email": {
"value": "email1@gmail.com"
}
},
{
"displayName": "name 1",
"email": {
"value": "email1@gmail.com"
}
}
];

我有 600 件元素,我想删除所有重复项但是 如果我有 2 件元素具有相同的电子邮件,但在一件元素中我有 displayName 而在其他元素中没有这样的字段 -> 使用 displayName 保留项目。

 contacts = _.unique(contacts, function(contact){
return contact.email.value;
});

这是一个 Fiddle我一起玩

请帮忙,

最佳答案

因为你标记了下划线,我给你的解决方案只有功能。

console.log(_.chain(contacts)
.groupBy(function(contact) {
return contact.email.value;
})
.values()
.map(function(contacts) {
var parts = _.partition(contacts, _.partial(_.has, _, 'displayName'));
return parts[parts[0].length ? 0 : 1][0];
})
.value()
);
# [ { displayName: 'name 1', email: { value: 'email1@gmail.com' } } ]

它首先根据 email.value 对所有联系人进行分组,然后仅选择键值对分组的 values。然后根据它们是否具有 displayName 属性这一事实对每个组进行分区。如果当前组有它,则从第一个分区返回第一个项目,否则从第二个分区返回。

关于javascript - 如何在某些条件下从列表中删除重复项,underscore.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766123/

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