UNPKG

utilite

Version:

Powerful utility library for JS

48 lines (47 loc) 1.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.compareJSONObject = void 0; function compareJSONObject(obj1, obj2) { const result = {}; function compareNestedObjects(obj1, obj2, key) { const nestedDiff = compareJSONObject(obj1, obj2); if (Object.keys(nestedDiff).length > 0) { result[key] = { status: "modified", nested: nestedDiff, }; } } for (const key in obj1) { if (Object.prototype.hasOwnProperty.call(obj1, key)) { if (!Object.prototype.hasOwnProperty.call(obj2, key)) { result[key] = { status: "deleted", value1: obj1[key], }; } else if (typeof obj1[key] === "object" && typeof obj2[key] === "object") { compareNestedObjects(obj1[key], obj2[key], key); } else if (obj1[key] !== obj2[key]) { result[key] = { status: "modified", value1: obj1[key], value2: obj2[key], }; } } } for (const key in obj2) { if (Object.prototype.hasOwnProperty.call(obj2, key) && !Object.prototype.hasOwnProperty.call(obj1, key)) { result[key] = { status: "added", value2: obj2[key], }; } } return result; } exports.compareJSONObject = compareJSONObject;