Javascript 如何比较两个对象的属性
我不明白代码有什么问题。在比较'arr'和'arr2'之后,我想从'arr'中删除'c'属性。两个数组中的“c”属性相同,因此我想在输出中删除它。函数返回的输出应该是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
{'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)