Javascript 如何比较两个对象的属性

Javascript 如何比较两个对象的属性,javascript,object,Javascript,Object,我不明白代码有什么问题。在比较'arr'和'arr2'之后,我想从'arr'中删除'c'属性。两个数组中的“c”属性相同,因此我想在输出中删除它。函数返回的输出应该是{'a':'daina','z':12},{'b':'john','y':22} 有人能帮我比较一下对象的属性吗?你把数组、对象、键和值混在一起了 您应该阅读变量arr和arr2,如下所示 var arr = [{'a':'daina', 'z':12},{'b':'john', 'y':22}, {'c':'alan','z':3

我不明白代码有什么问题。在比较'arr'和'arr2'之后,我想从'arr'中删除'c'属性。两个数组中的“c”属性相同,因此我想在输出中删除它。函数返回的输出应该是
{'a':'daina','z':12},{'b':'john','y':22}


有人能帮我比较一下对象的属性吗?

你把数组、对象、键和值混在一起了

您应该阅读变量
arr
arr2
,如下所示

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);
因此两个数组的键都是0、1和2,而值都是对象

在嵌套循环中

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}
你基本上是在比较:

for(var key1 in arr2){
for(var key in arr){
    if(key1 === key){
      ....
}}}
而不是价值观。 您应该比较
arr[key]===arr2[key1]
来比较这些值。遗憾的是,你不能像那样比较两个物体


看一看。您可以使用其中一个答案来比较对象,也可以重新考虑数据设计。

而不是像下面这样比较两个对象

key === key1
  0 === 0    (true)
  0 === 1    (false)
  0 === 2    (false)
etc.
你能试着像下面这样比较吗

 if(arr2[key1] === arr[key])

在arra2中,c对象是{'c':'john','z':62},而在arr中,它是{'c':'alan','z':30}。它们都不是sameyeah,但不管值是什么,属性名称都不应该相同。但z属性也存在于两个数组中的多个对象中。保留它的条件是什么?我只是好奇,你真的用随机缩进写代码吗?如果是,你怎么读?正确缩进真的有那么难吗?您的编辑器可能有一个命令为您执行此操作。
JSON.stringify(obj1) === JSON.stringify(obj2)