vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
28 lines (27 loc) • 1.08 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
exports.__esModule = true;
exports.default = prependDeep;
var _utils = require("../../../utils");
var _isSchema = _interopRequireDefault(require("./isSchema"));
var isObject = function isObject(obj) {
return Object.prototype.toString.call(obj) === '[object Object]';
};
function prependDeep(target, source) {
for (var key in source) if ((0, _utils.has)(source, key)) {
var sourceVal = source[key],
targetVal = target[key];
if (targetVal === undefined) {
target[key] = sourceVal;
} else if (targetVal === sourceVal) {
continue;
} else if ((0, _isSchema.default)(targetVal)) {
if ((0, _isSchema.default)(sourceVal)) target[key] = sourceVal.concat(targetVal);
} else if (isObject(targetVal)) {
if (isObject(sourceVal)) target[key] = prependDeep(targetVal, sourceVal);
} else if (Array.isArray(targetVal)) {
if (Array.isArray(sourceVal)) target[key] = sourceVal.concat(targetVal);
}
}
return target;
}