You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
function findDifferentProperties(objA, objB, prefix = '') {
|
|
const differentProps = {};
|
|
|
|
for (const key in objA) {
|
|
if (objA.hasOwnProperty(key)) {
|
|
const propPath = prefix ? `${prefix}.${key}` : key;
|
|
if (typeof objA[key] === 'object' && typeof objB[key] === 'object') {
|
|
const nestedDifferences = findDifferentProperties(objA[key], objB[key], propPath);
|
|
if (Object.keys(nestedDifferences).length > 0) {
|
|
differentProps[key] = nestedDifferences;
|
|
}
|
|
} else if (objA[key] !== objB[key]) {
|
|
// differentProps[key] = {
|
|
// oldValue: objA[key],
|
|
// newValue: objB[key],
|
|
// };
|
|
differentProps[key] = objB[key];
|
|
}
|
|
}
|
|
}
|
|
return differentProps;
|
|
}
|
|
|
|
function flattenObject(obj, parentKey = '') {
|
|
const result = {};
|
|
|
|
for (const key in obj) {
|
|
if (obj.hasOwnProperty(key)) {
|
|
const newKey = parentKey ? `${parentKey}.${key}` : key;
|
|
|
|
if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
|
|
const flattened = flattenObject(obj[key], newKey);
|
|
Object.assign(result, flattened);
|
|
} else {
|
|
result[newKey] = obj[key];
|
|
}
|
|
}
|
|
}
|
|
|
|
return result;
|
|
} |