You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.7 KiB
51 lines
1.7 KiB
|
4 months ago
|
"use strict";
|
||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
|
exports.deepAssign = void 0;
|
||
|
|
var tslib_1 = require("tslib");
|
||
|
|
var util_1 = require("@antv/util");
|
||
|
|
var MAX_MIX_LEVEL = 5;
|
||
|
|
var deep = function (dist, src, level, maxLevel) {
|
||
|
|
if (level === void 0) { level = 0; }
|
||
|
|
if (maxLevel === void 0) { maxLevel = MAX_MIX_LEVEL; }
|
||
|
|
Object.entries(src).forEach(function (_a) {
|
||
|
|
var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
|
||
|
|
var res = dist;
|
||
|
|
if (Object.prototype.hasOwnProperty.call(src, key)) {
|
||
|
|
if (!value) {
|
||
|
|
// null 、 undefined 等情况直接赋值
|
||
|
|
res[key] = value;
|
||
|
|
}
|
||
|
|
else if ((0, util_1.isPlainObject)(value)) {
|
||
|
|
if (!(0, util_1.isPlainObject)(dist[key])) {
|
||
|
|
res[key] = {};
|
||
|
|
}
|
||
|
|
if (level < maxLevel) {
|
||
|
|
deep(dist[key], value, level + 1, maxLevel);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
// 层级过深直接赋值,性能问题
|
||
|
|
res[key] = src[key];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else if ((0, util_1.isArray)(value)) {
|
||
|
|
res[key] = [];
|
||
|
|
res[key] = res[key].concat(value);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
res[key] = value;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
};
|
||
|
|
var deepAssign = function (rst) {
|
||
|
|
var args = [];
|
||
|
|
for (var _i = 1; _i < arguments.length; _i++) {
|
||
|
|
args[_i - 1] = arguments[_i];
|
||
|
|
}
|
||
|
|
for (var i = 0; i < args.length; i += 1) {
|
||
|
|
deep(rst, args[i]);
|
||
|
|
}
|
||
|
|
return rst;
|
||
|
|
};
|
||
|
|
exports.deepAssign = deepAssign;
|
||
|
|
//# sourceMappingURL=deep-assign.js.map
|