UNPKG

flo-utils

Version:
79 lines (67 loc) 1.81 kB
"use strict"; 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;