UNPKG

xxm-test-js

Version:
50 lines 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepMerge = deepMerge; /** * 递归合并两个或多个对象 * Copyright (c) 2024 xxm * * @template T - 目标对象类型 * @template U - 源对象类型 * @param {T} target - 目标对象 * @param {U} source - 源对象 * @returns {T & U} 返回合并后的新对象 * @example * * ```ts * const obj1 = { a: 1, b: { c: 2 } }; * const obj2 = { b: { d: 3 }, e: 4 }; * * const result = deepMerge(obj1, obj2); * // 结果: { a: 1, b: { c: 2, d: 3 }, e: 4 } * ``` */ function deepMerge(target, source) { const output = Object.assign({}, target); if (isObject(target) && isObject(source)) { Object.keys(source).forEach((key) => { if (isObject(source[key])) { if (!(key in target)) { Object.assign(output, { [key]: source[key] }); } else { output[key] = deepMerge(target[key], source[key]); } } else { Object.assign(output, { [key]: source[key] }); } }); } return output; } /** * 判断一个值是否为对象 * @param {any} item - 要检查的值 * @returns {boolean} 如果是对象则返回 true,否则返回 false */ function isObject(item) { return item && typeof item === 'object' && !Array.isArray(item); } //# sourceMappingURL=merge.js.map