t-comm
Version:
专业、稳定、纯粹的工具库
45 lines (41 loc) • 1.31 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
/* eslint-disable no-restricted-syntax */
var getRawType = function getRawType(val) {
return Object.prototype.toString.call(val).slice(8, -1);
};
var isPlainObject = function isPlainObject(val) {
return getRawType(val) === 'Object';
};
var isPlainObjectOrArray = function isPlainObjectOrArray(val) {
return isPlainObject(val) || Array.isArray(val);
};
var _merge = function merge(object) {
var sources = [];
for (var _i = 1; _i < arguments.length; _i++) {
sources[_i - 1] = arguments[_i];
}
for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {
var source = sources_1[_a];
for (var key in source) {
if (source[key] === undefined && key in object) {
continue;
}
if (isPlainObjectOrArray(source[key])) {
if (isPlainObjectOrArray(object[key]) && getRawType(object[key]) === getRawType(source[key])) {
if (isPlainObject(object[key])) {
_merge(object[key], source[key]);
} else {
object[key] = object[key].concat(source[key]);
}
} else {
object[key] = source[key];
}
} else {
object[key] = source[key];
}
}
}
return object;
};
exports.merge = _merge;