我要求根据某些条件检查从数组中删除重复的对象 如果任何对象具有相同的"连接器","地址","键入"这个数组中的值我需要删除该对象。
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循环,但结果没有在哪里。你能帮我找到做同样有效的方法吗?
答案 0 :(得分:1)
可以在下划线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)
工作代码here