两个对象之间的差异 - 减少
Difference between two Objects - reduce
我有 2 个对象,其数据重复但也不同。如何比较它们并找出差异?
const obj1 = {
surname: "kowalski",
name: "adam",
age: 23,
city: "Wroclaw",
country: "Poland",
};
const obj2 = {
name: "adam",
age: 34,
city: "Warszawa",
country: "Poland",
friend: "Ala",
};
const objCombined = { ...obj1, ...obj2 };
我必须使用 .reduce
。
我的作品:
const find = Object.entries(objCombined).reduce((diff, [key]) => {
if (!obj2[key]) return diff;
if (obj1[key] !== obj2[key]) diff[key] = obj2[key];
return diff;
}, {});
但输出没有 surname: "kowalski"
。
预期输出:
{surname: "kowalski", age: 34, city: "Warszawa", friend: "Ala"}
请使用此代码
const find = Object.entries(objCombined).reduce((diff, [key]) => {
if (!obj2[key]) {
diff[key] = obj1[key];
return diff;
}
if (obj1[key] !== obj2[key]) diff[key] = obj2[key];
return diff;
}, {});
删除 if (!obj2[key]) return diff
并添加 obj1[key];
如果 obj2[key];
未定义:
const obj1 = {
surname: "kowalski",
name: "adam",
age: 23,
city: "Wroclaw",
country: "Poland",
};
const obj2 = {
name: "adam",
age: 34,
city: "Warszawa",
country: "Poland",
friend: "Ala",
};
const objCombined = { ...obj1, ...obj2 };
const find = Object.entries(objCombined).reduce((diff, [key]) => {
// if (!obj2[key]) return diff;
if (obj1[key] !== obj2[key]) diff[key] = obj2[key] || obj1[key];
return diff;
}, {});
console.log(find);
我们可以用Object.keys()
和Array.reduce()
来得到两个对象的区别:
const obj1 = { surname: "kowalski", name: "adam", age: 23, city: "Wroclaw", country: "Poland", };
const obj2 = { name: "adam", age: 34, city: "Warszawa", country: "Poland", friend: "Ala", };
const diff = [...Object.keys(obj1), ...Object.keys(obj2)].reduce((acc, key) => {
if (obj1[key] !== obj2[key]) {
acc[key] = obj2[key] || obj1[key];
}
return acc;
}, {})
console.log("Diff:", diff);
我有 2 个对象,其数据重复但也不同。如何比较它们并找出差异?
const obj1 = {
surname: "kowalski",
name: "adam",
age: 23,
city: "Wroclaw",
country: "Poland",
};
const obj2 = {
name: "adam",
age: 34,
city: "Warszawa",
country: "Poland",
friend: "Ala",
};
const objCombined = { ...obj1, ...obj2 };
我必须使用 .reduce
。
我的作品:
const find = Object.entries(objCombined).reduce((diff, [key]) => {
if (!obj2[key]) return diff;
if (obj1[key] !== obj2[key]) diff[key] = obj2[key];
return diff;
}, {});
但输出没有 surname: "kowalski"
。
预期输出:
{surname: "kowalski", age: 34, city: "Warszawa", friend: "Ala"}
请使用此代码
const find = Object.entries(objCombined).reduce((diff, [key]) => {
if (!obj2[key]) {
diff[key] = obj1[key];
return diff;
}
if (obj1[key] !== obj2[key]) diff[key] = obj2[key];
return diff;
}, {});
删除 if (!obj2[key]) return diff
并添加 obj1[key];
如果 obj2[key];
未定义:
const obj1 = {
surname: "kowalski",
name: "adam",
age: 23,
city: "Wroclaw",
country: "Poland",
};
const obj2 = {
name: "adam",
age: 34,
city: "Warszawa",
country: "Poland",
friend: "Ala",
};
const objCombined = { ...obj1, ...obj2 };
const find = Object.entries(objCombined).reduce((diff, [key]) => {
// if (!obj2[key]) return diff;
if (obj1[key] !== obj2[key]) diff[key] = obj2[key] || obj1[key];
return diff;
}, {});
console.log(find);
我们可以用Object.keys()
和Array.reduce()
来得到两个对象的区别:
const obj1 = { surname: "kowalski", name: "adam", age: 23, city: "Wroclaw", country: "Poland", };
const obj2 = { name: "adam", age: 34, city: "Warszawa", country: "Poland", friend: "Ala", };
const diff = [...Object.keys(obj1), ...Object.keys(obj2)].reduce((acc, key) => {
if (obj1[key] !== obj2[key]) {
acc[key] = obj2[key] || obj1[key];
}
return acc;
}, {})
console.log("Diff:", diff);