node-red-contrib-huemagic
Version:
Philips Hue node to control bridges, lights, groups, scenes, rules, taps, switches, buttons, motion sensors, temperature sensors and Lux sensors using Node-RED.
35 lines (31 loc) • 807 B
JavaScript
function mergeDeep(...objects)
{
// CLEANUP FROM HTTP NODE
delete objects.req;
delete objects.res;
// BEGIN MERGING …
const isObject = obj => obj && typeof obj === 'object';
return objects.reduce((prev, obj) =>
{
Object.keys(obj).forEach(key =>
{
const pVal = prev[key];
const oVal = obj[key];
if(Array.isArray(pVal) && Array.isArray(oVal))
{
prev[key] = pVal.concat(...oVal);
}
else if (isObject(pVal) && isObject(oVal))
{
prev[key] = mergeDeep(pVal, oVal);
}
else
{
prev[key] = oVal;
}
});
return prev;
}, {});
}
// EXPORT
module.exports.deep = mergeDeep;