在数组中过滤重复的对象并通过两个属性过滤
问题描述:
我试图过滤或从对象数组中删除一些重复的对象。这是我的。在数组中过滤重复的对象并通过两个属性过滤
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"}]
感谢。
答
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;
}
});
你能看到控制台中的任何错误吗? –
不,只是返回一个空数组。 – Diego
你的问题不清楚。你到底在做什么?试图过滤重复的对象,或过滤具有'readingTime'属性的对象,或者您是否想过滤'readingTime'具有相同值的对象?在你的例子中,数组只包含一个对象,其中'readingTime'定义了两次。请解释,谢谢。 – DavidDomain