不在另一个阵列中的过滤器阵列
问题描述:
需要根据另一个阵列过滤一个阵列。是否有一个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
}];
答
您可以简单地运行obj1
使用filter
并使用indexOf
obj2
来查看它是否存在。 indexOf
如果值不在数组中,则返回-1
,并且当回调返回true
时filter
包括该项目。
var arr = obj1.filter(function(item){
return obj2.indexOf(item.id) === -1;
});
答
要创建输出数组,创建将通过OBJ1迭代并填充基于迭代每个obj的ID是否存在obj2的一系列新功能。
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;
};