我正在尝试显示其值不同的属性的名称。 然后,我试图显示另一个变量上不存在的属性
myObj1 = {
"name": "John",
"age": "45",
"car": 20,
"test": 30,
"example": 20
};
myObj2 = {
"name": "John",
"age": "30",
"car": 10,
"example": 10
};
// or
//myObj1 = { "name":"John", "age":"45", "car":20 };
//myObj2 = { "name":"John", "age":"30", "car":10,"test":30 };
// find keys
keyObj1 = Object.keys(myObj1);
keyObj2 = Object.keys(myObj2);
// find values
valueObj1 = Object.values(myObj1);
valueObj2 = Object.values(myObj2);
// find max length to iterate
if (keyObj1.length > keyObj2.length) {
var biggestKey = keyObj1.length;
} else {
var biggestKey = keyObj2.length;
}
// now compare their keys and values
for (var i = 0; i < biggestKey; i++) {
//console.log(biggestKey)
if (keyObj1[i] == keyObj2[i] && valueObj1[i] !== valueObj2[i]) {
console.log('property:' + keyObj1[i]);
console.log('first:' + valueObj1[i]);
console.log('second:' + valueObj2[i]);
}
}
实际结果:
- 属性(property):年龄,45,30
- 属性(property):汽车,20,10
- 属性:测试,30,10
- 属性:示例,20,未定义
预期结果:
- 属性(property):年龄,45,30
- 属性(property):汽车,20,10
- 属性:测试,30,未定义
- 属性:例如,20,10
最佳答案
问题
biggestKey 是长度而不是数组
在 biggestKey 中按键比较对象
myObj1 = {
"name": "John",
"age": "45",
"car": 20,
"test": 30,
"example": 20
};
myObj2 = {
"name": "John",
"age": "30",
"car": 10,
"example": 10
};
// find keys
keyObj1 = Object.keys(myObj1);
keyObj2 = Object.keys(myObj2);
// find max length to iterate
if (keyObj1.length > keyObj2.length) {
var biggestKey = keyObj1;
} else {
var biggestKey = keyObj2;
}
// now compare their keys and values
for (var i = 0; i < biggestKey.length; i++) {
//console.log(biggestKey)
var key = biggestKey[i];
if (myObj1[key] != myObj2[key]) {
console.log('project:', key, myObj1[key], myObj2[key]);
}
}
关于javascript - 显示两个 JS 对象之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58011402/