var arr = [{'a':'daina', 'z':12},{'b':'john', 'y':22}, {'c':'alan','z':30}];
var arr2 = [{'c':'john', 'z':62}, {'d':'alana','s':32}, {'e':'mac','t':42}];
var finalArray = [];
for(var key2 in arr) {
console.log(arr[key2]);
}
function compareKeys(arr,arr2){
for(var key1 in arr2){
for(var key in arr){
if(key1 === key){
finalArray = arr.splice(key,1);
}
}
}
for(var key in finalArray) {
console.log(finalArray[key]);
}
}
compareKeys(arr,arr2);
我没有得到代码的错误。我想删除' c'来自' arr'比较两个' arr'和' arr2'。 ' c'两个数组中的属性相同,所以我想在输出中删除它。函数返回的输出应为{'a':'daina', 'z':12},{'b':'john', 'y':22}
有人可以帮助我比较对象的属性吗?
答案 0 :(得分:0)
你在这里混合数组,对象,键和值。
您应该将变量arr
和arr2
读作
arr[0] = {'a':'daina', 'z':12}
arr[1] = {'b':'john', 'y':22}
arr[2] = {'c':'alan','z':30}]
and
arr2[0] = {'c':'john', 'z':62}
arr2[1] = {'d':'alana','s':32}
arr2[2] = {'e':'mac','t':42}
因此两个数组的键分别为0,1和2,而值是对象。
在你的嵌套循环中
for(var key1 in arr2){
for(var key in arr){
if(key1 === key){
....
}}}
你基本上都在比较:
key === key1
0 === 0 (true)
0 === 1 (false)
0 === 2 (false)
etc.
而不是价值观。
您应该比较arr[key] === arr2[key1]
来比较这些值。可悲的是,你无法像这样比较两个物体。
看看this question。您可以使用其中一个答案来比较对象,或重新考虑您的数据设计。
答案 1 :(得分:0)
而不是比较下面的两个对象
if(arr2[key1] === arr[key])
你能尝试比较下面的
JSON.stringify(obj1) === JSON.stringify(obj2)