flo-utils
Version:
79 lines (67 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _isArray = _interopRequireDefault(require("./isArray"));
var _isObject = _interopRequireDefault(require("./isObject"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* 数据分而治之,汇总输出
*
* @example
*
* const divideF = useDivide([{key: 'a', hook: (a) => a + 1}])
*
* divideF({a: 3}) // {a: 4}
*
* @param {*} [hooks=[]]
* [{
* key: string|number,
* hook: v => dv
* }]
* @param {*} [divide=(v) => v]
* @returns
*/
function useDivide() {
var hooks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var divide = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (v) {
return v;
};
return function (target) {
var hkeys = hooks.map(function (h) {
return h.key;
});
if ((0, _isArray.default)(target)) {
return target.map(function (t, i) {
var index = hkeys.findIndex(function (k) {
return k === i;
});
if (index > -1) {
var hook = hooks[index].hook;
return hook ? hook(t) : t;
}
return divide ? divide(t) : t;
});
}
if ((0, _isObject.default)(target)) {
var o = {};
Object.keys(target).forEach(function (t) {
var index = hkeys.findIndex(function (k) {
return k === t;
});
var tv = target[t];
if (index > -1) {
var hook = hooks[index].hook;
o[t] = hook ? hook(tv) : tv;
} else {
o[t] = divide ? divide(tv) : tv;
}
});
return o;
}
return target;
};
}
var _default = useDivide;
exports.default = _default;