Файл: src/javascript/-merge.js
Строк: 32
<?php
/**
* Update [old] object with [newer] values
* @return {obj}
*/
function deepMerge(target, source) {
if (typeof target !== 'object') {
return false;
}
if (!source) {
return target;
}
var src, val;
Object.keys(source).forEach(function (k) {
src = target[k]; // old val
val = source[k]; // new val
// prevent recursion
if (val === target) {
return;
}
// if new value isn't object then just overwrite by new value instead of extending.
if (typeof val !== 'object' || val === null) {
target[k] = val;
return;
}
// overwrite by new value if source isn't object or array
if (typeof src !== 'object' || src === null || Array.isArray(src)) {
target[k] = deepMerge({}, val);
return;
}
// source value and new value is objects both, extending...
target[k] = deepMerge(src, val);
return;
});
return target;
}
module.exports = deepMerge;
?>