UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

45 lines (41 loc) 1.31 kB
'use strict'; 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;