@liqd-js/alg-object-merge
Version:
Object Merge Algorithm
35 lines (34 loc) • 1.16 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const clone_1 = __importDefault(require("@liqd-js/clone"));
function merge(obj, ...patches) {
for (let data of patches) {
for (let key in data) {
if (data[key] === undefined) {
continue;
}
if (data[key] === null) {
delete obj[key];
}
else if (data[key] instanceof String) {
obj[key] = data[key];
}
else if (typeof obj[key] === 'object' && typeof data[key] === 'object' &&
obj[key] !== null && obj[key] !== undefined &&
!Array.isArray(obj[key]) && !Array.isArray(data[key])) {
merge(obj[key], data[key]);
}
else {
obj[key] = (0, clone_1.default)(data[key]);
}
}
}
return obj;
}
function ObjectMerge(obj, ...patches) {
return merge(obj, ...patches);
}
exports.default = ObjectMerge;
;