以下是代码 var arr1 = [{id:1},{id:2},{id:3},{id:4},{id:5}];
var arr2 = [{id:1},{id:2}];
var arr3 = [];
for(var i = 0;i < arr1.length;i++){
for(var j = 0;j < arr2.length;j++){
if(arr2[j].id != arr1[i].id){
arr3.push(arr1[i]);
break;
}
}
}
for(var k = 0;k < arr3.length;k++){
console.dir(arr3[k].id);
}我想arr3中的元素为[{id:3},{id:4},{id:5}],但结果还是[{id:1},{id:2},{id:3},{id:4},{id:5}];
这个要怎么解决呢?先谢谢大家啦!
var arr2 = [{id:1},{id:2}];
var arr3 = [];
for(var i = 0;i < arr1.length;i++){
for(var j = 0;j < arr2.length;j++){
if(arr2[j].id != arr1[i].id){
arr3.push(arr1[i]);
break;
}
}
}
for(var k = 0;k < arr3.length;k++){
console.dir(arr3[k].id);
}我想arr3中的元素为[{id:3},{id:4},{id:5}],但结果还是[{id:1},{id:2},{id:3},{id:4},{id:5}];
这个要怎么解决呢?先谢谢大家啦!
for(var k in arr1){
arr3[k] = arr1[k];
}
//求补集
for(var k in arr2){
if(arr3[k]){
delete arr3[k];
}else{
arr3[k] = arr2[k];
}
}
[code=JScript]
var arr1 = [{id:1},{id:2},{id:3},{id:4},{id:5}];
var arr2 = [{id:1},{id:2}];
var arr3 = [],b;
for(var i = 0;i < arr1.length;i++){
b=true;
for(var j = 0;j < arr2.length;j++){
if(arr2[j].id == arr1[i].id){
b=false;
break;
}
}
if(b)arr3.push(arr1[i])
}[/code]
var arr1 = [{id:1},{id:2},{id:3},{id:4},{id:5}];
var arr2 = [{id:1},{id:2}];
var arr3 = [],temp={};
for(var i = 0;i < arr2.length;i++){
temp[arr2[i].id]=!0;
};
for(var i = 0;i < arr1.length;i++){
if(!temp[arr1[i].id]){
arr3.push(arr1[i])
}
};
for(var k = 0;k < arr3.length;k++){
console.log(arr3[k].id);
}
var arr2 = [{id:1},{id:2}];
var arr3 = [];
for(var i = 0;i < arr1.length;i++){
var flag = 0;
for(var j = 0;j < arr2.length;j++){
if(arr2[j].id == arr1[i].id){
flag = 1;//我这个判断条件修改了
break;
}
}
if(!flag){
arr3.push(arr1[i]);
}
}逻辑有些问题,考虑不全
而且,你if之下的那个break只是跳出了if语句,不会跳出第二个for语句的,所以arr1[0]!=arr2[1]就会成立了,所以导致arr1[0]也被放入arr3数组了。