2015-12-21 276 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; 
} 

我用這個函數做什麼是分離一些對象,如果他們有屬性readingTime。數組itemsToFilter包含重複的對象,我試圖按id和readingTime過濾這樣的東西。

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

你的問題不清楚。你到底在做什麼?試圖過濾重複的對象,或過濾具有'readingTime'屬性的對象,或者您是否想過濾'readingTime'具有相同值的對象?在你的例子中,數組只包含一個對象,其中'readingTime'定義了兩次。請解釋,謝謝。 – 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和readingTime,我不知道我是否清楚在我的第一篇文章。感謝您的回答。 – Diego