需要根据另一个数组过滤一个数组。淘汰中是否有一个util函数?否则我需要使用javascript
第一:
var obj1 = [{
"visible": "true",
"id": 1
}, {
"visible": "true",
"id": 2
}, {
"visible": "true",
"id": 3
}, {
"Name": "Test3",
"id": 4
}];
第二:
var obj2 = [ 2,3]
现在我需要根据obj2过滤obj1并从obj1中返回上面数据中不在obj2 omittng 2,3中的项目(对象1的比较 Id )
输出:
[{
"visible": "true",
"id": 1
}, {
"Name": "Test3",
"id": 4
}];
答案 0 :(得分:27)
您可以使用obj1
直接浏览filter
并使用indexOf
上的obj2
来查看它是否存在。如果值不在数组中,则indexOf
会返回-1
,而当回调返回filter
时,true
会包含该项。
var arr = obj1.filter(function(item){
return obj2.indexOf(item.id) === -1;
});
答案 1 :(得分:0)
要创建输出数组,请创建一个函数,该函数将迭代obj1并根据obj2中是否存在迭代中每个obj的id来填充新数组。
var obj1 = [{
"visible": "true",
"id": 1
}, {
"visible": "true",
"id": 2
}, {
"visible": "true",
"id": 3
}, {
"Name": "Test3",
"id": 4
}];
var obj2 = [2,3]
var select = function(arr) {
var newArr = [];
obj1.forEach(function(obj) {
if obj2.indexOf(obj.id) !== -1 {
newArr.push(obj)
};
};
return newArr;
};