从数组中删除重复出现
Remove repeated occurance from an array
我需要根据特定条件检查从数组中删除重复的对象
如果此数组中具有相同 "connector"、"address"、"type" 值的任何对象,我需要删除该对象。
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)
工作代码here
我需要根据特定条件检查从数组中删除重复的对象 如果此数组中具有相同 "connector"、"address"、"type" 值的任何对象,我需要删除该对象。
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)
工作代码here