38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.merge = void 0;
|
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
/* eslint-disable prefer-rest-params */
|
|
|
|
/**
|
|
* 用于合并 n 个对象
|
|
* @param {any[]} ...rest
|
|
* @returns T
|
|
*/
|
|
var merge = exports.merge = function merge() {
|
|
var obj = {};
|
|
for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
rest[_key] = arguments[_key];
|
|
}
|
|
var il = rest.length;
|
|
var key;
|
|
var i = 0;
|
|
for (; i < il; i += 1) {
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
for (key in rest[i]) {
|
|
if (rest[i].hasOwnProperty(key)) {
|
|
if ((0, _typeof2.default)(obj[key]) === 'object' && (0, _typeof2.default)(rest[i][key]) === 'object' && obj[key] !== undefined && obj[key] !== null && !Array.isArray(obj[key]) && !Array.isArray(rest[i][key])) {
|
|
obj[key] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, obj[key]), rest[i][key]);
|
|
} else {
|
|
obj[key] = rest[i][key];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return obj;
|
|
}; |