如何比较 javascript 中的两个对象并得出差异?
How to compare two objects in javascript and get difference?
我有两个对象要比较。我想找到第二个对象中不同的键及其值。哪个应该 return 只有不同的键及其在对象中的值。
const obj1={name:"abc",age:21,place:"xyz"}
const obj2={name:"pqr",age:21}
所以,这里我想 return {name:"pqr"}
因为这里的名称值与第一个对象不同。
我试过了,
const returnObject = Object.assign({}, findOwner, data);
和
const returnObject = { ...findOwner, ...data };
但这些 return 并不是我想要的。
解决方案是,
function Newdifference(origObj, newObj) {
function changes(newObj, origObj) {
let arrayIndexCounter = 0
return transform(newObj, function (result, value, key) {
if (value && !isObject(value) && !isEqual(JSON.stringify(value), JSON.stringify(origObj[key]))) {
let resultKey = isArray(origObj) ? arrayIndexCounter++ : key
result[resultKey] = (isObject(value) && isObject(origObj[key])) ? changes(value, origObj[key]) : value
}
});
};
return changes(newObj, origObj);
}
此函数将return跟踪两个对象的变化
我找到了比较任何类型计数与任何 属性 顺序的更好方法:
let isEqual = (...params) => params.map(Object.keys).reduce((prev, cur) => [...prev, ...cur], []).every(key => params.every(param => param[key] === params[0][key]))
example
我有两个对象要比较。我想找到第二个对象中不同的键及其值。哪个应该 return 只有不同的键及其在对象中的值。
const obj1={name:"abc",age:21,place:"xyz"}
const obj2={name:"pqr",age:21}
所以,这里我想 return {name:"pqr"}
因为这里的名称值与第一个对象不同。
我试过了,
const returnObject = Object.assign({}, findOwner, data);
和
const returnObject = { ...findOwner, ...data };
但这些 return 并不是我想要的。
解决方案是,
function Newdifference(origObj, newObj) {
function changes(newObj, origObj) {
let arrayIndexCounter = 0
return transform(newObj, function (result, value, key) {
if (value && !isObject(value) && !isEqual(JSON.stringify(value), JSON.stringify(origObj[key]))) {
let resultKey = isArray(origObj) ? arrayIndexCounter++ : key
result[resultKey] = (isObject(value) && isObject(origObj[key])) ? changes(value, origObj[key]) : value
}
});
};
return changes(newObj, origObj);
}
此函数将return跟踪两个对象的变化
我找到了比较任何类型计数与任何 属性 顺序的更好方法:
let isEqual = (...params) => params.map(Object.keys).reduce((prev, cur) => [...prev, ...cur], []).every(key => params.every(param => param[key] === params[0][key]))
example