var res = arr.filter(function(e){
return e.id!=obj.id
})
下面是我的脑洞:万一题主要的是键值对都重复才过滤呢……(有可能想多了)
考虑到可能你还想保证数组里面元素的键值对跟obj的键值对必须完全一样的话:可以考虑这样
var arr=[{'id':1,'name':1},{id:2,name:3},{'id':3,'name':3}];
var arr2=[{'id':1,'name':1},{id:2,name:2},{'id':3,'name':3}];
var obj = {'id':2,'name':2};
var res = arr.filter(function(e){//
var result = true; //作为过滤标识
for(var key in obj){//遍历obj的键值
if(e[key]!=obj[key]){//如果出现键值相同当值不同,就不算重复
result = true;
break;
}
//如果上面条件不通过,那就表示键值重复
result = false;
}//遍历到最后,如果键值都重复,那result肯定是false,否则必然出现result=true的情况
return result;
});
var res2 = arr.filter(function(e){
var result = true;
for(var key in obj){
if(e[key]!=obj[key]){
result = true;
break;
}
result = false;
}
return result;
});
用数组的filter过滤一下就生成新的数组了。
另外,题目里的 数组第二个
'id:2'
语法错误,引号位置不对下面是我的脑洞:万一题主要的是键值对都重复才过滤呢……(有可能想多了)
考虑到可能你还想保证数组里面元素的键值对跟obj的键值对必须完全一样的话:可以考虑这样
雷雷
雷雷
Array.prototype.filter()
雷雷