tools-for-js 2.0.0 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,70 +11,73 @@ npm install tools-for-js --save
11
11
  ### 使用
12
12
 
13
13
  ```js
14
- import { API } from 'tools-for-js'
14
+ import { function } from 'tools-for-js'
15
15
  ```
16
16
 
17
- ### JS API
17
+ ### JS function
18
18
 
19
- | 名称 | API |
20
- | ------------------------------------------------ | ----------------- |
21
- | 阿拉伯数字转中文数字 | numToChinese |
22
- | 金额格式化 | moneyFormat |
23
- | 时间格式化 | dateFormat |
24
- | 下划线转小驼峰 | convertSmallHump |
25
- | 将对象中的键转小写 | lowercaseKeys |
26
- | 将对象中的键转大写 | upperCaseKeys |
27
- | 获取时间间隔 | getTimeDistance |
28
- | 获取时间戳 | timeStamp |
29
- | 获取倒计时 | countDown |
30
- | 距离当前时间状况 | transformDate |
31
- | 变量类型判断 | IsType |
32
- | 深拷贝变量 | deepCopy |
33
- | 校验空值参数 | isEmpty |
34
- | 校验两个参数是否相等 | isEqual |
35
- | 数组去重 | deWeightArray |
36
- | 计算树的最后节点某字段的总和 | treeLastChildSum |
37
- | 校验数组对象中是否存在指定的字段为空 | checkKeyEmpty |
38
- | 移动数组元素 | arrEleMove |
39
- | 数组元素交换位置 | arrExchange |
40
- | 数组格式转树状结构 | arrayToTree |
41
- | 根据 label 的值获取 value | getValueFromArray |
42
- | 随机抽取数组中的 n 个值 | randomNumEnum |
43
- | 精确加法 | exactAdd |
44
- | 计算数组元素的和 | summation |
45
- | 计算两个参数 | countNumber |
46
- | GBK 字符集实际长度计算 | getStrLength |
47
- | 密码强度校验 | checkPwdStrength |
48
- | 按指定长度分段字符串 | splitString |
49
- | 将对象转换为查询字符串 | objectToQs |
50
- | 计算数据分页 | getPagination |
51
- | 根据 key 值排序,相同时则根据时间 timeKey 值排序 | sortByKeyAndTime |
52
- | 根据 key 获取对象值 | getValByKey |
53
- | 数组随机打乱 | shuffleArray |
54
- | 将路径中的反斜杠字符 \ 替换为斜杠 / | replacePath |
55
- | 切割/获取文件名 | splitToFileName |
56
- | 数组反选 | invertSelection |
57
- | 创建时间对象 | createDate |
58
- | 获取结束时间 | getExpiresEndTime |
59
- | 判断是否过期 | isExpires |
60
- | 随机数字 | randomNum |
61
- | 随机字符串 | randomCode |
62
- | 随机颜色 | randomColor |
63
- | 创建 UUID | createUUID |
64
- | 随机 MAC 地址 | randomMac |
65
- | 随机索引 | randomIndex |
66
- | 随机数组中的值 | randomEnum |
67
- | 随机数组中的 n 个值 | randomNumEnum |
68
- | 随机指定范围的整数 | randomIntRange |
69
- | 验证手机号 | checkMobile |
70
- | 验证邮箱 | checkEmail |
71
- | 验证运动账号 | checkSports |
72
- | 判断是否为 json 字符串 | isJSONString |
73
- | 待更新 | function |
19
+ | 名称 | function |
20
+ | ------------------------------------------------ | ---------------------- |
21
+ | 阿拉伯数字转中文数字 | numToChinese |
22
+ | 金额格式化 | moneyFormat |
23
+ | 时间格式化 | dateFormat |
24
+ | 下划线转小驼峰 | convertSmallHump |
25
+ | 将对象中的键转小写 | lowercaseKeys |
26
+ | 将对象中的键转大写 | upperCaseKeys |
27
+ | 获取时间间隔 | getTimeDistance |
28
+ | 获取时间戳 | timeStamp |
29
+ | 获取倒计时 | countDown |
30
+ | 距离当前时间状况 | transformDate |
31
+ | 变量类型判断 | IsType |
32
+ | 深拷贝变量 | deepCopy |
33
+ | 校验空值参数 | isEmpty |
34
+ | 校验两个参数是否相等 | isEqual |
35
+ | 数组去重 | deWeightArray |
36
+ | 计算树的最后节点某字段的总和 | treeLastChildSum |
37
+ | 校验数组对象中是否存在指定的字段为空 | checkKeyEmpty |
38
+ | 移动数组元素 | arrEleMove |
39
+ | 数组元素交换位置 | arrExchange |
40
+ | 数组格式转树状结构 | arrayToTree |
41
+ | 根据 label 的值获取 value | getValueFromArray |
42
+ | 随机抽取数组中的 n 个值 | randomNumEnum |
43
+ | 精确加法 | exactAdd |
44
+ | 计算数组元素的和 | summation |
45
+ | 计算两个参数 | countNumber |
46
+ | GBK 字符集实际长度计算 | getStrLength |
47
+ | 密码强度校验 | checkPwdStrength |
48
+ | 按指定长度分段字符串 | splitString |
49
+ | 将对象转换为查询字符串 | objectToQs |
50
+ | 计算数据分页 | getPagination |
51
+ | 根据 key 值排序,相同时则根据时间 timeKey 值排序 | sortByKeyAndTime |
52
+ | 根据 key 获取对象值 | getValByKey |
53
+ | 数组随机打乱 | shuffleArray |
54
+ | 将路径中的反斜杠字符 \ 替换为斜杠 / | replacePath |
55
+ | 切割/获取文件名 | splitToFileName |
56
+ | 数组反选 | invertSelection |
57
+ | 创建时间对象 | createDate |
58
+ | 获取结束时间 | getExpiresEndTime |
59
+ | 判断是否过期 | isExpires |
60
+ | 随机数字 | randomNum |
61
+ | 随机字符串 | randomCode |
62
+ | 随机颜色 | randomColor |
63
+ | 创建 UUID | createUUID |
64
+ | 随机 MAC 地址 | randomMac |
65
+ | 随机索引 | randomIndex |
66
+ | 随机数组中的值 | randomEnum |
67
+ | 随机数组中的 n 个值 | randomNumEnum |
68
+ | 随机指定范围的整数 | randomIntRange |
69
+ | 验证手机号 | checkMobile |
70
+ | 验证邮箱 | checkEmail |
71
+ | 验证运动账号 | checkSports |
72
+ | 判断是否为 json 字符串 | isJSONString |
73
+ | 待更新 | function |
74
+ | 异步更新数组数据 | updateListWithData |
75
+ | 数组模糊搜索 | fuzzySearch |
76
+ | 数字金额转换为中文大写金额 | convertToChineseAmount |
74
77
 
75
- ### WEB 相关 API
78
+ ### WEB 相关 function
76
79
 
77
- | 名称 | API |
80
+ | 名称 | function |
78
81
  | -------------------------- | ---------------- |
79
82
  | store2:localStorage 缓存 | local |
80
83
  | store2:sessionStorage 缓存 | session |
package/lib/index.js CHANGED
@@ -82,6 +82,12 @@ Object.defineProperty(exports, "convertSmallHump", {
82
82
  return _transform.convertSmallHump;
83
83
  }
84
84
  });
85
+ Object.defineProperty(exports, "convertToChineseAmount", {
86
+ enumerable: true,
87
+ get: function get() {
88
+ return _transform.convertToChineseAmount;
89
+ }
90
+ });
85
91
  Object.defineProperty(exports, "copyText", {
86
92
  enumerable: true,
87
93
  get: function get() {
@@ -172,6 +178,12 @@ Object.defineProperty(exports, "fromCode", {
172
178
  return _string.fromCode;
173
179
  }
174
180
  });
181
+ Object.defineProperty(exports, "fuzzySearch", {
182
+ enumerable: true,
183
+ get: function get() {
184
+ return _array.fuzzySearch;
185
+ }
186
+ });
175
187
  Object.defineProperty(exports, "getAfterNDays", {
176
188
  enumerable: true,
177
189
  get: function get() {
@@ -538,6 +550,12 @@ Object.defineProperty(exports, "treeLastChildSum", {
538
550
  return _array.treeLastChildSum;
539
551
  }
540
552
  });
553
+ Object.defineProperty(exports, "updateListWithData", {
554
+ enumerable: true,
555
+ get: function get() {
556
+ return _array.updateListWithData;
557
+ }
558
+ });
541
559
  Object.defineProperty(exports, "upperCaseKeys", {
542
560
  enumerable: true,
543
561
  get: function get() {
@@ -1,16 +1,25 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.getValueFromArray = exports.getPagination = exports.deWeightArray = exports.checkKeyEmpty = exports.arrayToTree = exports.arrExchange = exports.arrEleMove = void 0;
7
+ exports.getValueFromArray = exports.getPagination = exports.fuzzySearch = exports.deWeightArray = exports.checkKeyEmpty = exports.arrayToTree = exports.arrExchange = exports.arrEleMove = void 0;
7
8
  exports.invertSelection = invertSelection;
8
9
  exports.randomNumEnum = void 0;
9
10
  exports.shuffleArray = shuffleArray;
10
- exports.treeLastChildSum = exports.sortByKeyAndTime = void 0;
11
+ exports.updateListWithData = exports.treeLastChildSum = exports.sortByKeyAndTime = void 0;
11
12
  var _calculate = require("./calculate");
12
13
  var _common = require("./common");
13
14
  var _object = require("./object");
15
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
16
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
20
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
22
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
14
23
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
15
24
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
25
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -301,4 +310,139 @@ function invertSelection(list, elem) {
301
310
  return list.filter(function (item) {
302
311
  return item === key === (elem === key);
303
312
  });
304
- }
313
+ }
314
+
315
+ /*******
316
+ * @description: 异步更新数组数据
317
+ * @author: 琴时
318
+ * @param {Array} list [原数组]
319
+ * @param {AsyncGeneratorFunction} asyncReq [异步请求函数]
320
+ * @return {Array} [更新后的数组]
321
+ */
322
+ var updateListWithData = exports.updateListWithData = /*#__PURE__*/function () {
323
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(list, asyncReq) {
324
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
325
+ while (1) switch (_context2.prev = _context2.next) {
326
+ case 0:
327
+ _context2.next = 2;
328
+ return Promise.all(list.map( /*#__PURE__*/function () {
329
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(item) {
330
+ var res;
331
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
332
+ while (1) switch (_context.prev = _context.next) {
333
+ case 0:
334
+ _context.prev = 0;
335
+ _context.next = 3;
336
+ return asyncReq(item);
337
+ case 3:
338
+ res = _context.sent;
339
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, item), {}, {
340
+ res: res // 将响应数据新增到item中
341
+ }));
342
+ case 7:
343
+ _context.prev = 7;
344
+ _context.t0 = _context["catch"](0);
345
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, item), {}, {
346
+ res: null
347
+ }));
348
+ case 10:
349
+ case "end":
350
+ return _context.stop();
351
+ }
352
+ }, _callee, null, [[0, 7]]);
353
+ }));
354
+ return function (_x3) {
355
+ return _ref6.apply(this, arguments);
356
+ };
357
+ }()));
358
+ case 2:
359
+ return _context2.abrupt("return", _context2.sent);
360
+ case 3:
361
+ case "end":
362
+ return _context2.stop();
363
+ }
364
+ }, _callee2);
365
+ }));
366
+ return function updateListWithData(_x, _x2) {
367
+ return _ref5.apply(this, arguments);
368
+ };
369
+ }();
370
+
371
+ /*******
372
+ * @description: 数组模糊搜索
373
+ * @author: 琴时
374
+ * @param {Array} list
375
+ * @param {Object|Null} obj [多个字段就以且的方式进行]
376
+ * @return {Array} 返回搜索后的数组
377
+ */
378
+ var fuzzySearch = exports.fuzzySearch = function fuzzySearch(list, obj) {
379
+ if (!obj || JSON.stringify(obj) === '{}') return list;
380
+ var keys = []; //关联搜索字段
381
+ var values = []; //对应的搜索内容
382
+ // 处理搜索对象
383
+ for (var key in obj) {
384
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
385
+ var _obj$key;
386
+ var value = (_obj$key = obj[key]) !== null && _obj$key !== void 0 ? _obj$key : '';
387
+ value = value.toString().toLowerCase();
388
+ values.push(value);
389
+ keys.push(key);
390
+ }
391
+ }
392
+ return list.filter(function (item) {
393
+ // 检查name是否匹配(如果提供了nameKeyword)
394
+ var matchList = values.map(function (val, i) {
395
+ var status = true;
396
+ if (val) {
397
+ var _key = keys[i];
398
+ status = item[_key].toString().toLowerCase().includes(val);
399
+ }
400
+ return status;
401
+ });
402
+ return matchList.every(function (bool) {
403
+ return bool;
404
+ });
405
+ });
406
+ };
407
+ /* 测试 */
408
+ /* const list1 = [
409
+ {
410
+ key: 1,
411
+ name: 'John Brown',
412
+ age: 32,
413
+ address: 'New York No. 1 Lake Park',
414
+ url: '/api/apply/applyList',
415
+ },
416
+ {
417
+ key: 2,
418
+ name: 'Jim Green',
419
+ age: 42,
420
+ address: 'London No. 1 Lake Park',
421
+ url: '/api/apply/applyList',
422
+ },
423
+ ]
424
+ const asyncReq = (item) => {
425
+ return new Promise((resolve, reject) => {
426
+ setTimeout(() => {
427
+ resolve(item)
428
+ }, 1000)
429
+ })
430
+ }
431
+ // 调用函数并处理结果
432
+ updateListWithData(list1, asyncReq).then((data) => {
433
+ console.log(data)
434
+ })
435
+ */
436
+
437
+ /* // 示例使用
438
+ const list = [
439
+ { id: 'P001', name: '姓名', key: 'name' },
440
+ { id: 'P002', name: '性别', key: 'sex' },
441
+ { id: 'P003', name: '年龄', key: 'age' },
442
+ { id: 'P004', name: '年级', key: 'grade' },
443
+ { id: 'P005', name: '班级01', key: 'class01' },
444
+ { id: 'P006', name: '班级02', key: 'class02' }
445
+ ]
446
+ const result = fuzzySearch(list, { name: '班级', key: 'class' });
447
+ console.log(result);
448
+ // 输出:[{ id: 'P005', name: '班级01', key: 'class01' },{ id: 'P006', name: '班级02', key: 'class02' }] */
@@ -8,8 +8,8 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
8
8
  /*******
9
9
  * @description: 变量类型判断
10
10
  * @author: 琴时
11
- * @param {String} type [判断的类型]
12
- * @param {*} params [判断的参数]
11
+ * @param {String} type [类型] 如:String|Number|Boolean||Object|Array|Date|Null|Undefined|RegExp|Error|Function
12
+ * @param {*} params [参数]
13
13
  * @return {Boolean}
14
14
  * @example: IsType('String', '123')
15
15
  */
@@ -60,21 +60,15 @@ var deepCopy = exports.deepCopy = function deepCopy(params) {
60
60
  };
61
61
 
62
62
  /*******
63
- * @description: 校验空值参数:
64
- * 在判断参数是否为空时,希望把null,undefined,{},[],"",NaN这六类都判定为空
63
+ * @description: 校验空值参数:将 ''|null|undefined|NaN|[]|{} 判断为空
65
64
  * @author: 琴时
66
65
  * @param {*} params [需要校验的参数]
67
66
  * @return {Boolean} [空:true,非空:false]
68
67
  */
69
68
  var isEmpty = exports.isEmpty = function isEmpty(params) {
70
- /* 检验字符串类型:空字符串/字符串null/字符串undefined/字符串{}/字符串[]==>也判断为空 */
71
- var array = ['', 'null', 'undefined', '{}', '[]'];
72
- if (array.some(function (str) {
73
- return params === str;
74
- })) return true;
75
69
  if (params === 0 || params === 1) return false; //过滤0/1
76
- if (!Boolean(params)) return true; //校验undefined/null/NaN
77
- /* 检验空数组|对象 */
70
+ if (!Boolean(params)) return true; //校验''/undefined/null/NaN
71
+ if (IsType('String', params) && params.trim() === '') return true; //校验多空格空字符串
78
72
  if (IsType('Array', params) && params.length === 0) return true; //检验空数组[]
79
73
  if (IsType('Object', params) && Object.keys(params).length === 0) return true; //检验空对象{}
80
74
  return false; //非空
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.upperCaseKeys = exports.textTransform = exports.numToChinese = exports.moneyFormat = exports.lowercaseKeys = exports.convertSmallHump = void 0;
6
+ exports.convertSmallHump = void 0;
7
+ exports.convertToChineseAmount = convertToChineseAmount;
8
+ exports.upperCaseKeys = exports.textTransform = exports.numToChinese = exports.moneyFormat = exports.lowercaseKeys = void 0;
7
9
  var chnNumChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
8
10
  var chnUnitSection = ['', '万', '亿', '万亿', '亿亿'];
9
11
  var chnUnitChar = ['', '十', '百', '千'];
@@ -110,6 +112,91 @@ var moneyFormat = exports.moneyFormat = function moneyFormat(value, currency, de
110
112
  _float;
111
113
  };
112
114
 
115
+ /**
116
+ * 将数字金额转换为中文大写金额(繁体)
117
+ * @param {number|string} money - 金额数字
118
+ * @returns {string} 中文大写金额
119
+ */
120
+ function convertToChineseAmount(money) {
121
+ if (!money || money === '' || isNaN(Number(money))) {
122
+ return '';
123
+ }
124
+ var amount = Number(money);
125
+ if (amount < 0) {
126
+ return '';
127
+ }
128
+
129
+ // 中文数字
130
+ var cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
131
+ // 基本单位
132
+ var cnIntRadice = ['', '拾', '佰', '仟'];
133
+ // 对应整数部分扩展单位
134
+ var cnIntUnits = ['', '万', '亿', '兆'];
135
+ // 对应小数部分单位
136
+ var cnDecUnits = ['角', '分'];
137
+ // 整数金额时后面跟的字符
138
+ var cnInteger = '整';
139
+ // 整型完以后的单位
140
+ var cnIntLast = '元';
141
+ // 最大处理的数字
142
+ var maxNum = 9999999999999999.99;
143
+ if (amount >= maxNum) {
144
+ return '金额过大';
145
+ }
146
+
147
+ // 金额整数部分
148
+ var integerNum = Math.floor(amount);
149
+ // 金额小数部分
150
+ var decimalNum = Math.round((amount - integerNum) * 100);
151
+ // 输出的中文金额字符串
152
+ var chineseStr = '';
153
+
154
+ // 处理整数部分
155
+ if (integerNum === 0) {
156
+ chineseStr = cnNums[0] + cnIntLast;
157
+ } else {
158
+ var zeroCount = 0;
159
+ var IntLen = integerNum.toString().length;
160
+ for (var i = 0; i < IntLen; i++) {
161
+ var n = integerNum % 10;
162
+ var p = Math.floor(i / 4);
163
+ var q = i % 4;
164
+ if (n === 0) {
165
+ zeroCount++;
166
+ } else {
167
+ if (zeroCount > 0) {
168
+ chineseStr = cnNums[0] + chineseStr;
169
+ }
170
+ zeroCount = 0;
171
+ chineseStr = cnNums[n] + cnIntRadice[q] + chineseStr;
172
+ }
173
+ if (q === 0 && zeroCount < 4) {
174
+ chineseStr = cnIntUnits[p] + chineseStr;
175
+ }
176
+ integerNum = Math.floor(integerNum / 10);
177
+ }
178
+ chineseStr = chineseStr + cnIntLast;
179
+ }
180
+
181
+ // 处理小数部分
182
+ if (decimalNum === 0) {
183
+ chineseStr = chineseStr + cnInteger;
184
+ } else {
185
+ var jiao = Math.floor(decimalNum / 10);
186
+ var fen = decimalNum % 10;
187
+ if (jiao !== 0) {
188
+ chineseStr = chineseStr + cnNums[jiao] + cnDecUnits[0];
189
+ }
190
+ if (fen !== 0) {
191
+ if (jiao === 0) {
192
+ chineseStr = chineseStr + cnNums[0];
193
+ }
194
+ chineseStr = chineseStr + cnNums[fen] + cnDecUnits[1];
195
+ }
196
+ }
197
+ return chineseStr;
198
+ }
199
+
113
200
  /*******
114
201
  * @description: Txt 转数组对象
115
202
  * 将txt文件内容转化成定制数组对象
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tools-for-js",
3
- "version": "2.0.0",
3
+ "version": "2.0.4",
4
4
  "description": "基于babel构建的JavaScript前端工具库",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {