Javascript 从数组中删除重复出现的情况
我需要根据特定的条件检查从数组中删除重复的对象 如果此数组中有任何具有相同“连接器”、“地址”、“类型”值的对象,我需要删除该对象Javascript 从数组中删除重复出现的情况,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,我需要根据特定的条件检查从数组中删除重复的对象 如果此数组中有任何具有相同“连接器”、“地址”、“类型”值的对象,我需要删除该对象 array = [{ connector : 'smtp', name : 'john', address : 'john@gmail.com', type : 'cc' }, { connector : 'smtp', name : 'john',
array = [{
connector : 'smtp',
name : 'john',
address : 'john@gmail.com',
type : 'cc'
}, {
connector : 'smtp',
name : 'john',
address : 'john@gmail.com',
type : 'cc'
}, {
connector : 'gtp',
name : 'mark',
address : 'mark@gmail.com',
type : 'cc'
}, {
connector : 'ftp',
name : 'wiki',
address : 'wiki@gmail.com',
type : 'bcc'
},
{
connector : 'smtp',
name : 'wiki',
address : 'wiki@gmail.com',
type : 'cc'
}
]
我需要像下面这样的输出
output = [{
connector : 'smtp',
name : 'john',
address : 'john@gmail.com',
type : 'cc'
},{
connector : 'gtp',
name : 'mark',
address : 'mark@gmail.com',
type : 'cc'
}, {
connector : 'ftp',
name : 'wiki',
address : 'wiki@gmail.com',
type : 'bcc'
},
{
connector : 'smtp',
name : 'wiki',
address : 'wiki@gmail.com',
type : 'cc'
}
]
对不起,我尝试了一些重复的foreach循环,但最终没有结果。你能帮我找到任何有效的方法来做同样的事情吗 这可以在uniq的帮助下完成
array = [{
connector : 'smtp',
name : 'john',
address : 'john@gmail.com',
type : 'cc'
}, {
connector : 'smtp',
name : 'john',
address : 'john@gmail.com',
type : 'cc'
}, {
connector : 'gtp',
name : 'mark',
address : 'mark@gmail.com',
type : 'cc'
}, {
connector : 'ftp',
name : 'wiki',
address : 'wiki@gmail.com',
type : 'bcc'
},
{
connector : 'smtp',
name : 'wiki',
address : 'wiki@gmail.com',
type : 'cc'
}
]
//generating a string of keys you wish to compare which forms the criteria for uniqueness
add = _.uniq(array, function(a){ return a.connector + "-" + a.address + "-" + a.type;})
console.log(add)
工作代码添加您尝试查找underline.js库的代码。它们具有重复过滤功能。
uniqBy
也可以使用<代码>.\uqby(数组,obj=>obj.connector+'-'+obj.address+'-'+obj.type)代码>JSON.stringify
是一个改进的解决方案hope@Tushar你确定uniqBy不在doc@Cyril中吗?它在LodashUse中。Lodashy在中解释过,以避免比较字符串。