如何在我的案例中找到重复的对象?

时间:2014-06-10 21:09:32

标签: javascript object

我正在尝试将对象推入我的数组中。问题是某些对象是重复的。

我的代码如下:

var obj = {
             'obj1 {
                     'id':'1', 'title':'title 1'
                   },
             'obj2 {
                     'id':'2', 'title':'title 2'
                   },
             'obj3 {
                     'id':'3', 'title':'title 3'
                   }, //duplicated
             'obj3 {
                     'id':'3', 'title':'title 3'
                   },
             'obj4 {
                     'id':'4', 'title':'title 4'
                   }
             // and many more..
          }

var arr= [];

for (i in obj){
   arr.push(obj[i]) 
} 

我不知道如何查找重复的obj并仅将唯一对象推送到arr

有人可以帮帮我吗?非常感谢!

2 个答案:

答案 0 :(得分:1)

如果您的对象存储在一个数组中(很难通过您的示例判断),您可以使用以下函数根据一个或多个属性从该数组中获取唯一对象存储的对象:

// get unique object members by property name(s)
function unique(arr, props) {
    var results = [],
        seen = [];
    for (var i=0; i < arr.length; i++){
        var key = "";
        for (var j=0; j < props.length; j++) {
            key += "" + arr[i][props[j]];
        }
        if (seen.indexOf(key) == -1) {
            seen.push(key);
            results.push(arr[i]);
        }
    }
    return results;
}

var obj = [
    { 'id': 1, 'title': 'title 1' },
    { 'id': 2, 'title': 'title 2' },
    { 'id': 3, 'title': 'title 3' },
    { 'id': 3, 'title': 'title 3' },
    { 'id': 4, 'title': 'title 4' }
];

var results = unique(obj, [ 'id', 'title' ]);
// results => [ obj[0], obj[1], obj[2], obj[4] ]

答案 1 :(得分:0)

如果性能不是问题,您可以通过这种方式进行重复数据删除。

var deduped = {};
for (var i in obj) {
    deduped[JSON.stringify(obj[i])] = obj[i];
}