qminer
Version:
A C++ based data analytics platform for processing large-scale real-time streams containing structured and unstructured data
24 lines (22 loc) • 666 B
JavaScript
function isObjectAndNotArray(object) {
return (typeof object === 'object' && !Array.isArray(object));
}
// 'createNew' defaults to false
function overwriteKeys(baseObject, overrideObject, createNew) {
if (!baseObject) {
baseObject = {};
}
if (createNew) {
baseObject = JSON.parse(JSON.stringify(baseObject));
}
Object.keys(overrideObject).forEach(function(key) {
if (isObjectAndNotArray(baseObject[key]) && isObjectAndNotArray(overrideObject[key])) {
overwriteKeys(baseObject[key], overrideObject[key]);
}
else {
baseObject[key] = overrideObject[key];
}
});
return baseObject;
}
module.exports = overwriteKeys;