【JS】js 实现两个数组(一个数组包含于另一个数组中)去重的问题
arr2是arr1的子数组,(也就是说arr2中的元素arr1都有)现在要得到在arr1中删除arr2中出现的元素后的结果,各位大神有什么好办法
var arr1 = [{id:1,name:'a'},
{id:2,name:'abc'},
{id:3,name:'abbb'},
{id:4,name:'abxxx'},
{id:5,name:'xyz'},
{id:6,name:'abcdef'},
{id:7,name:'abzzzz'}];
var arr2 = [
{id:1,name:'a'},
{id:5,name:'xyz'},
{id:7,name:'abzzzz'}];
回答
var result = arr1.filter(function(item1) { return arr2.every(function(item2) {
return item2.id !== item1.id
})
})
var out=[];var flag=true;
for(var i=0;i<arr1.length;i++){
flag=true;
for(var j=0;j<arr2.length;j++){
if(arr1[i].id==arr2[j].id && arr[i].name == arr2[j].name ){ // 如果数据能保证id和name一直配对,则可以少一个比较条件
flag = false;
break;
}
}
if(flag){
out.push(arr1[i]);
}
}
for(var i = 0 ; i < arr1.length ; i++){
for(var j = 0 ; j < arr2.length ; j++){ if(arr1[i].id == arr2[j].id){
arr1.splice(i,1);
}
}
}
console.log(arr1)
遍历数组取交集
以上是 【JS】js 实现两个数组(一个数组包含于另一个数组中)去重的问题 的全部内容, 来源链接: utcz.com/a/86832.html