UNPKG

mofang-mopai-utils

Version:

Use it in Mopai system

336 lines (335 loc) 9.43 kB
"use strict"; exports.__esModule = true; exports["default"] = exports.flat = exports.setGlobalUtils = exports.loadJs = exports.whichTypeOf = exports.isExist = exports.unzip = exports.zip = exports.isNotEmpty = exports.isEmpty = exports.getUUID = exports.calcV2 = exports.calc = exports.getValidObject = exports.unique = exports.throttle = exports.debounce = exports.deepCopy = void 0; /** * 魔方魔派系统工具包 */ var mofang_mopai_calculator_1 = require("./mofang-mopai-calculator"); var mofang_calculator_v2_1 = require("./mofang-calculator-v2"); /** * 深拷贝 * @param data { any } * @returns any */ function deepCopy(data) { var d; if (typeof data === 'object') { if (Array.isArray(data)) { d = []; for (var i = 0, len = data.length; i < len; i++) d[i] = deepCopy(data[i]); } else if (data === null) { d = null; } else if (data.constructor === RegExp) { d = data; } else if (Object.keys(data).length) { d = {}; for (var key in data) { var k = key; d[k] = deepCopy(data[k]); } } else { d = data; } } else { d = data; } return d; } exports.deepCopy = deepCopy; /** * 防抖 * @param fn {Function} * @param delay {number} * @returns {Function} */ function debounce(fn, delay) { if (delay === void 0) { delay = 200; } var timer; if (typeof fn !== 'function') { throw new TypeError('类型错误,传入函数不是一个方法'); } return function () { var _this = this; var args = arguments; clearTimeout(timer); timer = setTimeout(function () { fn.apply(_this, args); }, delay); }; } exports.debounce = debounce; /** * 节流 * @param fn - The function to be throttled. * @param delay - The number of milliseconds to delay. * @returns A new throttled function. */ function throttle(fn, delay) { if (delay === void 0) { delay = 200; } var isRunning = false; if (typeof fn !== 'function') { throw new TypeError('类型错误,传入函数不是一个方法'); } return function () { var args = arguments; if (isRunning) return; isRunning = true; fn.apply(this, args); setTimeout(function () { isRunning = false; }, delay); }; } exports.throttle = throttle; /** * 去重 * Returns a new array without duplicate elements. * @param arr - The array to remove duplicates from. * @returns A new array without duplicate elements. */ function unique(arr) { if (!Array.isArray(arr)) { throw new TypeError('类型错误,传入参数不是一个Array'); } var list = []; var _loop_1 = function (value) { if (typeof value === "object" && value !== null) { if (list.every(function (v) { return JSON.stringify(v) !== JSON.stringify(value); })) { list.push(value); } } else if (value !== undefined && list.indexOf(value) === -1) { list.push(value); } }; for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) { var value = arr_1[_i]; _loop_1(value); } return list; } exports.unique = unique; /** * Flattens an array of arrays into a single level array. * * @param arr - the array to flatten * @returns a new array with all the elements of the original array, regardless of their nesting level */ function flat(arr) { if (!Array.isArray(arr)) { throw new TypeError('类型错误,传入参数不是一个Array'); } return arr.reduce(function (prev, cur) { return prev.concat(Array.isArray(cur) ? flat(cur) : cur); }, []); } exports.flat = flat; /** * 过滤掉object中的无效键值 * @param data object * @returns object */ function getValidObject(data) { if (typeof data !== 'object' && Object.prototype.toString.call(data) !== '[object Object]') { throw new TypeError('类型错误,传入参数不是一个Object'); } var obj = {}; for (var key in data) { var value = data[key]; var isEnable = false; if (typeof value === 'object' && value !== null) { isEnable = isEmpty(value); } else { isEnable = value || value === 0; } isEnable && (obj[key] = value); } return obj; } exports.getValidObject = getValidObject; /** * 基于前端的计算器 * @param formula { string } 计算公式 * @returns number 计算结果 * * @example * calc('1.2+0.3*0.02+4') // return 5.206 */ function calc(formula) { var ca = new mofang_mopai_calculator_1["default"](formula); return ca.get(); } exports.calc = calc; function calcV2(number1, number2, method) { return (0, mofang_calculator_v2_1["default"])(number1, number2, method); } exports.calcV2 = calcV2; function getUUID(len) { if (len === void 0) { len = 32; } var chars = Array.from('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'); var uuid = []; var radix = len; for (var i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; return uuid.join(''); } exports.getUUID = getUUID; /** * 判断Pbject或Array是否为空 * @param data { object | array } * @returns boolean */ function isEmpty(data) { if (Array.isArray(data)) { return data.length === 0; } else { return Object.keys(data).length === 0; } } exports.isEmpty = isEmpty; function isNotEmpty(data) { return !isEmpty(data); } exports.isNotEmpty = isNotEmpty; /** * 格式化数组分组 * @param arr * @returns array */ function zip() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (!args || !Array.isArray(args) || args.some(function (item) { return !Array.isArray(item); })) { throw new TypeError('类型错误,传入参数错误'); } var resultList = []; args.forEach(function (list, listIdx) { list.forEach(function (item, itemIdx) { if (!resultList[itemIdx]) resultList[itemIdx] = []; resultList[itemIdx][listIdx] = item; }); }); return resultList; } exports.zip = zip; function unzip() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (!args || !Array.isArray(args) || args.some(function (item) { return !Array.isArray(item); })) { throw new TypeError('类型错误,传入参数错误'); } var len = 0; var resultList = []; args.forEach(function (list, listIdx) { if (len === 0) { len = list.length; } if (len !== list.length) { throw new TypeError('they are not same length Array in list'); } list.forEach(function (item, itemIdx) { if (!resultList[itemIdx]) resultList[itemIdx] = []; resultList[itemIdx][listIdx] = item; }); }); return resultList; } exports.unzip = unzip; /** * 判断object|array中是否存在指定参数 * @param keyname { string } * @param data { object | array } * @returns boolean */ function isExist(keyname, data) { if (Array.isArray(data)) { return data.indexOf(keyname) > -1; } else { var keys = Object.keys(data); return keys.indexOf(keyname) > -1; } } exports.isExist = isExist; /** * 判断数据类型 * @param data { any } * @returns string 数据的类型,小写 */ function whichTypeOf(data) { if (typeof data === 'object') { return Array.isArray(data) ? 'array' : Object.prototype.toString.call(data) === '[object Object]' ? 'object' : 'unknownType'; } else { return typeof data; } } exports.whichTypeOf = whichTypeOf; /** * 动态置入script标签,引用js文件 * @param src { string } js文件链接 * @param cb { function } 状态回调 * @returns promise 状态回调 */ function loadJs(src, cb) { var script = document.createElement('script'); script.type = 'text/javascript'; script.src = src; document.getElementsByTagName('head')[0].appendChild(script); return new Promise(function (resolve, rejects) { script.onload = function () { cb === null || cb === void 0 ? void 0 : cb('ok'); resolve('ok'); }; script.onerror = function () { cb === null || cb === void 0 ? void 0 : cb('error'); rejects('error'); }; }); } exports.loadJs = loadJs; var toolkit = { deepCopy: deepCopy, debounce: debounce, throttle: throttle, unique: unique, getValidObject: getValidObject, calc: calc, calcV2: calcV2, getUUID: getUUID, isEmpty: isEmpty, isNotEmpty: isNotEmpty, zip: zip, unzip: unzip, isExist: isExist, whichTypeOf: whichTypeOf, loadJs: loadJs, flat: flat }; exports["default"] = toolkit; /** * 设置window全局utils * @param keyname { string } 键名 [default: $utils] */ function setGlobalUtils(keyname) { var key = keyname || '$utils'; if (window) { !window[key] && (window[key] = toolkit); } } exports.setGlobalUtils = setGlobalUtils;