2015-12-21 5 views
0

Я пытаюсь отфильтровать или удалить некоторые дублированные объекты из массива объектов. Вот что у меня есть.Фильтровать дублированные объекты в массиве и фильтр по двум свойствам

var itemsToFilter = []; 
var filteredItems = []; 
var items = []; 

function filterRepeated (data) { 

    _.forEach(data, function(e) { 
    if(e.readingTime) { 
     itemsToFilter.push(e); 
    } else { 
     items.push(e); 
    } 
    }); 

    filteredItems = _.uniq(itemsToFilter, 'id'); 
    items.push.apply(items, filteredItems); 

    return items; 
} 

Что я делаю с этой функцией, это отделить некоторые объекты, если они имеют свойство readTime. Элементы массиваToFilter содержат повторяющиеся объекты, я пытался фильтровать по id и readTime с чем-то вроде этого.

var a = itemsToFilter.filter(function(n) { 
    console.log(n); 
    if(n['id'].indexOf() !== -1 && n['readingTime'].indexOf() !== -1) { 
     console.log(n); 
     //return true; 
    } else { 
     return false; 
    } 
    }); 

Но он ничего не делает.

Формат объектов Я пытаюсь фильтровать:

[{time: 1450672782667, sequence_number: 55240001, readingTime: 1450669920000, id: "56572093c007a1164a02a78c", tipo: "Posición actualizada"}, {time: 1450672782667, sequence_number: 55240001, readingTime: 1450669920000, id: "56572093c007a1164a02a78c", tipo: "Posición actualizada"}] 

Спасибо.

+0

Вы можете видеть ошибки в консоли? –

+0

Нет просто вернуть пустой массив. – Diego

+0

Ваш вопрос непонятен. Что именно вы пытаетесь сделать здесь. Вы пытаетесь фильтровать дублированные объекты или фильтровать объекты, имеющие опцию 'readTime', или пытаетесь фильтровать объекты, которые имеют одинаковое значение для' readTime'? В вашем примере массив содержит только один объект, причем 'readTime' определяется дважды. Пожалуйста, объясните, спасибо. – DavidDomain

ответ

0
 var arr = []; 
     var a = itemsToFilter.filter(function(n) { 
     console.log(n); 
     if(arr.indexOf(n['id']) !== -1 && arr.indexOf(n['readingTime']) !== -1) { 

      return true; 
     } else { 
arr.push(n['id']); 
      arr.push(n['readingTime']); 
      return false; 
     } 
     }); 
+0

Спасибо за ваш ответ, я пробовал свой код, но все равно дает мне пустой массив, я знаю, что я что-то упустил. – Diego

+0

Извините за плохое форматирование, это должно сработать. – zahreelay

+0

zahreelay, есть способ фильтровать целые объекты, а не создавать новый объект с id и readTime, я не знаю, было ли я ясно в моем первом сообщении. Спасибо за Ваш ответ. – Diego

Смежные вопросы