从阵列中删除重复出现

时间:2016-04-01 05:46:31

标签: javascript underscore.js lodash

我要求根据某些条件检查从数组中删除重复的对象 如果任何对象具有相同的"连接器","地址","键入"这个数组中的值我需要删除该对象。

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循环,但结果没有在哪里。你能帮我找到做同样有效的方法吗?

1 个答案:

答案 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