2014-06-10 7 views
-1

Я пытаюсь вставить объекты в свой массив. Проблема в том, что некоторые объекты дублируются.Как найти дублированный объект в моем случае?

Мои коды являются следующие:

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.

Может кто-нибудь помочь мне? Большое спасибо!

+0

Это недопустимый синтаксис. В любом случае свойства объекта должны быть уникальными. – SLaks

+0

Возможный дубликат: http://stackoverflow.com/questions/17350363/add-only-unique-objects-to-an-array-in-javascript – Uxonith

ответ

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] ] 
0

Вы можете дедупировать таким образом, если производительность не является проблемой.

var deduped = {}; 
for (var i in obj) { 
    deduped[JSON.stringify(obj[i])] = obj[i]; 
} 
Смежные вопросы