var arr=[{'id':1,'name':1},{'id':2,name:2},{'id':3,'name':3}];
var obj = {'id':2,'name':2};
請(qǐng)問(wèn)這個(gè)arr 和obj怎么進(jìn)行對(duì)比,發(fā)現(xiàn)重復(fù)id2后,去掉arr這個(gè)數(shù)組對(duì)象id:2,并生成一個(gè)新的數(shù)組?
用數(shù)組的filter過(guò)濾一下就生成新的數(shù)組了。
另外,題目里的 數(shù)組第二個(gè) 'id:2'
語(yǔ)法錯(cuò)誤,引號(hào)位置不對(duì)
var res = arr.filter(function(e){
return e.id!=obj.id
})
下面是我的腦洞:萬(wàn)一題主要的是鍵值對(duì)都重復(fù)才過(guò)濾呢……(有可能想多了)
考慮到可能你還想保證數(shù)組里面元素的鍵值對(duì)跟obj的鍵值對(duì)必須完全一樣的話(huà):可以考慮這樣
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; //作為過(guò)濾標(biāo)識(shí)
for(var key in obj){//遍歷obj的鍵值
if(e[key]!=obj[key]){//如果出現(xiàn)鍵值相同當(dāng)值不同,就不算重復(fù)
result = true;
break;
}
//如果上面條件不通過(guò),那就表示鍵值重復(fù)
result = false;
}//遍歷到最后,如果鍵值都重復(fù),那result肯定是false,否則必然出現(xiàn)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;
});