@ivujs/i-utils 1.1.1 → 1.1.3

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.
Files changed (140) hide show
  1. package/README.md +17 -19
  2. package/dist/cjs/id/index.cjs +26 -43
  3. package/dist/cjs/index.cjs +8 -398
  4. package/dist/es/id/index.d.ts +16 -0
  5. package/dist/es/id/index.mjs +28 -42
  6. package/dist/es/index.d.ts +2 -0
  7. package/dist/es/index.mjs +8 -58
  8. package/dist/index.d.ts +21 -0
  9. package/dist/lib/index.full.cjs.js +38 -0
  10. package/dist/lib/index.full.cjs.min.js +2 -0
  11. package/dist/lib/index.full.cjs.min.js.map +1 -0
  12. package/dist/lib/index.full.esm.js +35 -15822
  13. package/dist/lib/index.full.esm.min.js +2 -58
  14. package/dist/lib/index.full.esm.min.js.map +1 -0
  15. package/dist/lib/index.full.umd.js +39 -16176
  16. package/dist/lib/index.full.umd.min.js +2 -0
  17. package/dist/lib/index.full.umd.min.js.map +1 -0
  18. package/package.json +84 -54
  19. package/dist/cjs/ID-card/index.cjs +0 -122
  20. package/dist/cjs/array/index.cjs +0 -465
  21. package/dist/cjs/clipboard/index.cjs +0 -135
  22. package/dist/cjs/color/index.cjs +0 -210
  23. package/dist/cjs/constants/date.cjs +0 -186
  24. package/dist/cjs/constants/lang.cjs +0 -13
  25. package/dist/cjs/constants/math.cjs +0 -13
  26. package/dist/cjs/constants/regexp.cjs +0 -57
  27. package/dist/cjs/constants/sort.cjs +0 -15
  28. package/dist/cjs/cookie/index.cjs +0 -71
  29. package/dist/cjs/crypto/aes/aes.cjs +0 -533
  30. package/dist/cjs/crypto/aes/index.cjs +0 -28
  31. package/dist/cjs/crypto/base32/base32.cjs +0 -385
  32. package/dist/cjs/crypto/base32/index.cjs +0 -44
  33. package/dist/cjs/crypto/base64/base64.cjs +0 -433
  34. package/dist/cjs/crypto/base64/index.cjs +0 -64
  35. package/dist/cjs/crypto/des/des.cjs +0 -1054
  36. package/dist/cjs/crypto/des/index.cjs +0 -30
  37. package/dist/cjs/crypto/md5/index.cjs +0 -25
  38. package/dist/cjs/crypto/md5/md5.cjs +0 -944
  39. package/dist/cjs/crypto/sha/sha1/index.cjs +0 -25
  40. package/dist/cjs/crypto/sha/sha1/sha1.cjs +0 -602
  41. package/dist/cjs/crypto/sha/sha256/index.cjs +0 -46
  42. package/dist/cjs/crypto/sha/sha256/sha256.cjs +0 -654
  43. package/dist/cjs/crypto/sha/sha3/index.cjs +0 -44
  44. package/dist/cjs/crypto/sha/sha3/sha3.cjs +0 -747
  45. package/dist/cjs/crypto/sha/sha512/index.cjs +0 -88
  46. package/dist/cjs/crypto/sha/sha512/sha512.cjs +0 -1186
  47. package/dist/cjs/crypto/sm/lib/asn1.cjs +0 -167
  48. package/dist/cjs/crypto/sm/lib/ec.cjs +0 -352
  49. package/dist/cjs/crypto/sm/lib/jsbn.cjs +0 -1633
  50. package/dist/cjs/crypto/sm/lib/sm3.cjs +0 -173
  51. package/dist/cjs/crypto/sm/lib/utils.cjs +0 -198
  52. package/dist/cjs/crypto/sm/sm2/index.cjs +0 -122
  53. package/dist/cjs/crypto/sm/sm2/sm2.cjs +0 -269
  54. package/dist/cjs/crypto/sm/sm3/index.cjs +0 -15
  55. package/dist/cjs/crypto/sm/sm3/sm3.cjs +0 -103
  56. package/dist/cjs/crypto/sm/sm4/index.cjs +0 -28
  57. package/dist/cjs/crypto/sm/sm4/sm4.cjs +0 -362
  58. package/dist/cjs/crypto/tea/index.cjs +0 -26
  59. package/dist/cjs/crypto/tea/tea.cjs +0 -215
  60. package/dist/cjs/date/index.cjs +0 -1349
  61. package/dist/cjs/desensitized/index.cjs +0 -74
  62. package/dist/cjs/device/index.cjs +0 -159
  63. package/dist/cjs/dom/index.cjs +0 -176
  64. package/dist/cjs/file/index.cjs +0 -339
  65. package/dist/cjs/function/index.cjs +0 -67
  66. package/dist/cjs/keycode/index.cjs +0 -142
  67. package/dist/cjs/math/index.cjs +0 -284
  68. package/dist/cjs/number/index.cjs +0 -14
  69. package/dist/cjs/object/index.cjs +0 -216
  70. package/dist/cjs/pagination/index.cjs +0 -140
  71. package/dist/cjs/random/index.cjs +0 -25
  72. package/dist/cjs/regexp/index.cjs +0 -109
  73. package/dist/cjs/storage/index.cjs +0 -11
  74. package/dist/cjs/storage/localStorage.cjs +0 -40
  75. package/dist/cjs/storage/sessionStorage.cjs +0 -40
  76. package/dist/cjs/string/index.cjs +0 -338
  77. package/dist/cjs/url/index.cjs +0 -279
  78. package/dist/cjs/validate/index.cjs +0 -487
  79. package/dist/cjs/weapp/index.cjs +0 -151
  80. package/dist/es/ID-card/index.mjs +0 -116
  81. package/dist/es/array/index.mjs +0 -437
  82. package/dist/es/clipboard/index.mjs +0 -129
  83. package/dist/es/color/index.mjs +0 -200
  84. package/dist/es/constants/date.mjs +0 -184
  85. package/dist/es/constants/lang.mjs +0 -11
  86. package/dist/es/constants/math.mjs +0 -11
  87. package/dist/es/constants/regexp.mjs +0 -55
  88. package/dist/es/constants/sort.mjs +0 -13
  89. package/dist/es/cookie/index.mjs +0 -65
  90. package/dist/es/crypto/aes/aes.mjs +0 -529
  91. package/dist/es/crypto/aes/index.mjs +0 -25
  92. package/dist/es/crypto/base32/base32.mjs +0 -381
  93. package/dist/es/crypto/base32/index.mjs +0 -39
  94. package/dist/es/crypto/base64/base64.mjs +0 -427
  95. package/dist/es/crypto/base64/index.mjs +0 -57
  96. package/dist/es/crypto/des/des.mjs +0 -1050
  97. package/dist/es/crypto/des/index.mjs +0 -27
  98. package/dist/es/crypto/md5/index.mjs +0 -22
  99. package/dist/es/crypto/md5/md5.mjs +0 -941
  100. package/dist/es/crypto/sha/sha1/index.mjs +0 -22
  101. package/dist/es/crypto/sha/sha1/sha1.mjs +0 -599
  102. package/dist/es/crypto/sha/sha256/index.mjs +0 -41
  103. package/dist/es/crypto/sha/sha256/sha256.mjs +0 -649
  104. package/dist/es/crypto/sha/sha3/index.mjs +0 -39
  105. package/dist/es/crypto/sha/sha3/sha3.mjs +0 -742
  106. package/dist/es/crypto/sha/sha512/index.mjs +0 -79
  107. package/dist/es/crypto/sha/sha512/sha512.mjs +0 -1177
  108. package/dist/es/crypto/sm/lib/asn1.mjs +0 -164
  109. package/dist/es/crypto/sm/lib/ec.mjs +0 -349
  110. package/dist/es/crypto/sm/lib/jsbn.mjs +0 -1630
  111. package/dist/es/crypto/sm/lib/sm3.mjs +0 -170
  112. package/dist/es/crypto/sm/lib/utils.mjs +0 -186
  113. package/dist/es/crypto/sm/sm2/index.mjs +0 -111
  114. package/dist/es/crypto/sm/sm2/sm2.mjs +0 -258
  115. package/dist/es/crypto/sm/sm3/index.mjs +0 -13
  116. package/dist/es/crypto/sm/sm3/sm3.mjs +0 -99
  117. package/dist/es/crypto/sm/sm4/index.mjs +0 -25
  118. package/dist/es/crypto/sm/sm4/sm4.mjs +0 -359
  119. package/dist/es/crypto/tea/index.mjs +0 -23
  120. package/dist/es/crypto/tea/tea.mjs +0 -211
  121. package/dist/es/date/index.mjs +0 -1262
  122. package/dist/es/desensitized/index.mjs +0 -69
  123. package/dist/es/device/index.mjs +0 -145
  124. package/dist/es/dom/index.mjs +0 -164
  125. package/dist/es/file/index.mjs +0 -323
  126. package/dist/es/function/index.mjs +0 -63
  127. package/dist/es/keycode/index.mjs +0 -139
  128. package/dist/es/math/index.mjs +0 -274
  129. package/dist/es/number/index.mjs +0 -12
  130. package/dist/es/object/index.mjs +0 -203
  131. package/dist/es/pagination/index.mjs +0 -134
  132. package/dist/es/random/index.mjs +0 -22
  133. package/dist/es/regexp/index.mjs +0 -98
  134. package/dist/es/storage/index.mjs +0 -9
  135. package/dist/es/storage/localStorage.mjs +0 -35
  136. package/dist/es/storage/sessionStorage.mjs +0 -35
  137. package/dist/es/string/index.mjs +0 -321
  138. package/dist/es/url/index.mjs +0 -261
  139. package/dist/es/validate/index.mjs +0 -451
  140. package/dist/es/weapp/index.mjs +0 -140
@@ -1,284 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('../validate/index.cjs');
4
- var math = require('../constants/math.cjs');
5
-
6
- /* 数字计算 */
7
- /**
8
- * 两个数字相加
9
- * @param {String|Number} arg1 第一个数字
10
- * @param {String|Number} arg2 第二个数字
11
- * @returns {Number} 返回计算后的数字
12
- */
13
- function add(arg1, arg2) {
14
- let r1, r2, m;
15
- try {
16
- r1 = arg1.toString().split(".")[1].length;
17
- } catch (e) {
18
- r1 = 0;
19
- }
20
- try {
21
- r2 = arg2.toString().split(".")[1].length;
22
- } catch (e) {
23
- r2 = 0;
24
- }
25
- m = Math.pow(10, Math.max(r1, r2));
26
- return (arg1 * m + arg2 * m) / m;
27
- }
28
-
29
- /**
30
- * 两个数字相减
31
- * @param {String|Number} arg1 第一个数字
32
- * @param {String|Number} arg2 第二个数字
33
- * @returns {Number} 返回计算后的数字
34
- */
35
- function subtract(arg1, arg2) {
36
- let r1, r2, m, n;
37
- try {
38
- r1 = arg1.toString().split(".")[1].length;
39
- } catch (e) {
40
- r1 = 0;
41
- }
42
- try {
43
- r2 = arg2.toString().split(".")[1].length;
44
- } catch (e) {
45
- r2 = 0;
46
- }
47
- m = Math.pow(10, Math.max(r1, r2));
48
- n = r1 >= r2 ? r1 : r2;
49
- return ((arg1 * m - arg2 * m) / m).toFixed(n);
50
- }
51
-
52
- /**
53
- * 两个数字相乘
54
- * @param {String|Number} arg1 第一个数字
55
- * @param {String|Number} arg2 第二个数字
56
- * @returns 返回计算后的数字
57
- */
58
- function multiply(arg1, arg2) {
59
- let m = 0,
60
- s1 = arg1.toString(),
61
- s2 = arg2.toString();
62
- try {
63
- m += s1.split(".")[1].length;
64
- } catch (e) {}
65
- try {
66
- m += s2.split(".")[1].length;
67
- } catch (e) {}
68
- return (Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) / Math.pow(10, m);
69
- }
70
-
71
- /**
72
- * 两个数字相除
73
- * @param {String|Number} arg1 第一个数字
74
- * @param {String|Number} arg2 第二个数字
75
- * @returns {Number} 返回计算后的数字
76
- */
77
- function divide(arg1, arg2) {
78
- let t1 = 0,
79
- t2 = 0,
80
- r1,
81
- r2;
82
- try {
83
- t1 = arg1.toString().split(".")[1].length;
84
- } catch (e) {}
85
- try {
86
- t2 = arg2.toString().split(".")[1].length;
87
- } catch (e) {}
88
- r1 = Number(arg1.toString().replace(".", ""));
89
- r2 = Number(arg2.toString().replace(".", ""));
90
- return (r1 / r2) * Math.pow(10, t2 - t1);
91
- }
92
-
93
- /**
94
- * 两个数字取模
95
- * @param {String|Number} arg1 第一个数字
96
- * @param {String|Number} arg2 第二个数字
97
- * @returns {Number} 返回计算后的数字
98
- */
99
- function modulo(arg1, arg2) {
100
- let t1 = 0,
101
- t2 = 0,
102
- d = 0;
103
- try {
104
- t1 = arg1.toString().split(".")[1].length;
105
- } catch (e) {}
106
- try {
107
- t2 = arg2.toString().split(".")[1].length;
108
- } catch (e) {}
109
- d = Math.pow(10, Math.max(t1, t2));
110
- return (Math.round(Number(arg1) * d) % Math.round(Number(arg2) * d)) / d;
111
- }
112
-
113
- /**
114
- * 最大公约数
115
- * @param {String|Number} arg1 第一个数字
116
- * @param {String|Number} arg2 第二个数字
117
- * @returns {Number} 返回计算后的数字
118
- */
119
- function gcd(arg1, arg2) {
120
- return !arg2 ? arg1 : gcd(arg2, arg1 % arg2);
121
- }
122
-
123
- /**
124
- * 最小公倍数
125
- * @param {String|Number} arg1 第一个数字
126
- * @param {String|Number} arg2 第二个数字
127
- * @returns {Number} 返回计算后的数字
128
- */
129
- function scm(arg1, arg2) {
130
- return (arg1 * arg2) / gcd(arg1, arg2);
131
- }
132
-
133
- /* 数字精度 */
134
- /**
135
- * 强制保留小数位数
136
- * @description 默认保留两位小数,解决原生的toFixed()会五舍六入的问题
137
- * @param {String|Number} num 数字
138
- * @param {Number} decimals 保留小数的位数,默认2位
139
- * @param {Number} mode 保留小数模式
140
- * @returns {String} 返回保留后的数字字符串
141
- */
142
- function toFixed(num, decimals = 2, mode = math.MATH.ROUND) {
143
- // 四舍五入
144
- if (mode === math.MATH.ROUND) {
145
- return _toFixedRound(num, decimals);
146
- }
147
- // 向下舍出
148
- if (mode === math.MATH.ROUND_FLOOR) {
149
- return _toFixedFloor(num, decimals);
150
- }
151
- }
152
-
153
- /**
154
- * 尽可能保留小数位数
155
- * @param {String|Number} num 数字
156
- * @param {Number} decimals 保留小数的位数,默认2位
157
- * @param {Number} mode 保留小数模式
158
- * @returns {Number} 返回保留后的数字
159
- */
160
- function toDecimal(num, decimals = 2, mode = math.MATH.ROUND) {
161
- // 四舍五入
162
- if (mode === math.MATH.ROUND) {
163
- return _toDecimalRound(num, decimals);
164
- }
165
- // 向下舍出
166
- if (mode === math.MATH.ROUND_FLOOR) {
167
- return _toDecimalFloor(num, decimals);
168
- }
169
- }
170
-
171
- /* 内部函数 */
172
- /**
173
- * 四舍五入,强制保留小数位数
174
- * @description 默认保留两位小数,此方法解决原生的toFixed()会五舍六入的问题
175
- * @param {String|Number} num 数字
176
- * @param {Number} decimals 保留小数的位数,默认2位
177
- * @returns {String} 返回字符串的数字
178
- */
179
- function _toFixedRound(num, decimals = 2) {
180
- if (index.isNaN(num)) {
181
- return "--";
182
- }
183
- let s = String(num);
184
- if (!decimals) decimals = 0;
185
- if (s.indexOf(".") === -1) s += ".";
186
- s += new Array(decimals + 1).join("0");
187
- if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (decimals + 1) + "})?)\\d*$").test(s)) {
188
- let s = "0" + RegExp.$2,
189
- pm = RegExp.$1,
190
- a = RegExp.$3.length,
191
- b = true;
192
- if (a === decimals + 2) {
193
- a = s.match(/\d/g);
194
- if (parseInt(a[a.length - 1]) > 4) {
195
- for (let i = a.length - 2; i >= 0; i--) {
196
- a[i] = parseInt(a[i]) + 1;
197
- if (a[i] === 10) {
198
- a[i] = 0;
199
- b = i !== 1;
200
- } else break;
201
- }
202
- }
203
- s = a.join("").replace(new RegExp("(\\d+)(\\d{" + decimals + "})\\d$"), "$1.$2");
204
- }
205
- if (b) s = s.substr(1);
206
- return (pm + s).replace(/\.$/, "");
207
- }
208
- return String(num);
209
- }
210
-
211
- /**
212
- * 向下舍出,强制保留小数位数
213
- * @description 默认保留两位小数,此方法相当于强制截取小数位数
214
- * @param {String|Number} num 数字
215
- * @param {Number} decimals 保留小数的位数,默认2位
216
- * @returns {Number} 返回字符串的数字
217
- */
218
- function _toFixedFloor(num, decimals = 2) {
219
- if (index.isNaN(num)) {
220
- return "--";
221
- }
222
- // 默认为保留的小数点后两位
223
- let dec = decimals;
224
- let tempNum = Number(num);
225
- let pointIndex = String(tempNum).indexOf(".") + 1; // 获取小数点的位置 + 1
226
- let pointCount = pointIndex ? String(tempNum).length - pointIndex : 0; // 获取小数点后的个数(需要保证有小数位)
227
- // 源数据为整数或者小数点后面小于decimals位的作补零处理
228
- if (pointIndex === 0 || pointCount <= dec) {
229
- let tempNumA = tempNum;
230
- if (pointIndex === 0) {
231
- tempNumA = `${tempNumA}.`;
232
- for (let index = 0; index < dec - pointCount; index++) {
233
- tempNumA = `${tempNumA}0`;
234
- }
235
- } else {
236
- for (let index = 0; index < dec - pointCount; index++) {
237
- tempNumA = `${tempNumA}0`;
238
- }
239
- }
240
- return tempNumA;
241
- }
242
- let realVal = "";
243
- // 截取当前数据到小数点后decimals位
244
- realVal = `${String(tempNum).split(".")[0]}.${String(tempNum).split(".")[1].substring(0, dec)}`;
245
- return String(realVal);
246
- }
247
-
248
- /**
249
- * 四舍五入,尽可能保留小数
250
- * @param {String|Number} num 数字
251
- * @param {Number} decimals 保留小数的位数,默认2位
252
- * @returns {Number} 返回保留后的数字
253
- */
254
- function _toDecimalRound(num, decimals = 2) {
255
- if (index.isNaN(num)) {
256
- return "--";
257
- }
258
- let n = Math.pow(10, decimals);
259
- return Math.round(num * n) / n;
260
- }
261
-
262
- /**
263
- * 向下舍入,尽可能保留小数
264
- * @param {String|Number} num 数字
265
- * @param {Number} decimals 保留小数的位数,默认2位
266
- * @returns {Number} 返回保留后的数字
267
- */
268
- function _toDecimalFloor(num, decimals = 2) {
269
- if (index.isNaN(num)) {
270
- return "--";
271
- }
272
- let n = Math.pow(10, decimals);
273
- return Math.floor(num * n) / n;
274
- }
275
-
276
- exports.add = add;
277
- exports.divide = divide;
278
- exports.gcd = gcd;
279
- exports.modulo = modulo;
280
- exports.multiply = multiply;
281
- exports.scm = scm;
282
- exports.subtract = subtract;
283
- exports.toDecimal = toDecimal;
284
- exports.toFixed = toFixed;
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * 转为数字类型
5
- * @description 解决部分浏览器在转换 '08','09'等是0开头时被默认转8进制问题
6
- * @param {String,number} value 转换的值
7
- * @param {Number} radix 进制数,默认10进制
8
- * @returns {Number} 返回转换后的数字
9
- */
10
- function parseInt(value, radix = 10) {
11
- return Number.parseInt(value, radix);
12
- }
13
-
14
- exports.parseInt = parseInt;
@@ -1,216 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('../validate/index.cjs');
4
-
5
- /* 对象转换 */
6
- /**
7
- * map转object
8
- * @param {Map} map 参数
9
- * @returns {Object} 返回Object
10
- */
11
- function mapToObject(map) {
12
- let obj = Object.create(null);
13
- for (let [k, v] of map) {
14
- obj[k] = v;
15
- }
16
- return obj;
17
- }
18
-
19
- /**
20
- * map转json字符串
21
- * @param {Map} map 参数
22
- * @returns {String} 返回Json字符串
23
- */
24
- function mapToJson(map) {
25
- return JSON.stringify(mapToObject(map));
26
- }
27
-
28
- /**
29
- * object转map
30
- * @param {Object} obj 参数
31
- * @returns {Map} 返回Map
32
- */
33
- function objectToMap(obj) {
34
- let map = new Map();
35
- for (let k of Object.keys(obj)) {
36
- map.set(k, obj[k]);
37
- }
38
- return map;
39
- }
40
-
41
- /**
42
- * json字符串转map
43
- * @param {String} json json字符串
44
- * @returns {Map} 返回Map
45
- */
46
- function jsonToMap(json) {
47
- return objectToMap(JSON.parse(json));
48
- }
49
-
50
- /**
51
- * json对象转json字符串
52
- * @param {Object} json json对象
53
- * @returns {String} 返回Json字符串
54
- */
55
- function stringifyJson(json) {
56
- return JSON.stringify(json);
57
- }
58
-
59
- /**
60
- * json字符串转json对象
61
- * @param {String} json json字符串
62
- * @returns {Object} 返回Json对象
63
- */
64
- function parseJson(json) {
65
- if (index.isEmpty(json)) return;
66
- return JSON.parse(json);
67
- }
68
-
69
- /* 数据拷贝,对比,合并等操作 */
70
- /**
71
- * 浅拷贝数据
72
- * @param {*} source 拷贝的数据
73
- * @returns {*} 返回浅拷贝的数据
74
- */
75
- function clone(source) {
76
- return Object.assign(source);
77
- }
78
-
79
- /**
80
- * 深拷贝数据
81
- * @param {*} source 拷贝的数据
82
- * @returns {*} 返回深拷贝的数据
83
- */
84
- function cloneDeep(source) {
85
- // Object
86
- if (index.isObject(source)) {
87
- let copy = {};
88
- for (let attr in source) {
89
- if (source.hasOwnProperty(attr)) copy[attr] = cloneDeep(source[attr]);
90
- }
91
- return copy;
92
- }
93
-
94
- // Array
95
- else if (index.isArray(source)) {
96
- let copy = [];
97
- for (let i = 0, len = source.length; i < len; i++) {
98
- copy[i] = cloneDeep(source[i]);
99
- }
100
- return copy;
101
- }
102
-
103
- // Date
104
- else if (index.isDate(source)) {
105
- let copy = new Date();
106
- copy.setTime(source.getTime());
107
- return copy;
108
- }
109
-
110
- // Other 原路返回源数据
111
- else {
112
- return source;
113
- }
114
- }
115
-
116
- /**
117
- * 比较两个对象是否相等
118
- * @description 方法只能对比简单的对象,不能包含function,另外对象的属性顺序不一致也是相等的
119
- * @param {Object} obj1 对象1
120
- * @param {Object} obj2 对象2
121
- * @returns {Boolean} 返回true和false
122
- */
123
- function objectEquals(obj1, obj2) {
124
- // 比较值相等
125
- if (obj1 === obj2) {
126
- return true;
127
- }
128
- // 比较Date
129
- if (obj1 instanceof Date && obj2 instanceof Date) {
130
- return obj1.getTime() === obj2.getTime();
131
- }
132
- // 对象比较引用
133
- if (!obj1 || !obj2 || (typeof obj1 !== "object" && typeof obj2 !== "object")) {
134
- return obj1 === obj2;
135
- }
136
- // 比较原型
137
- if (obj1.prototype !== obj2.prototype) {
138
- return false;
139
- }
140
- // 比较对象的值
141
- const keys = Object.keys(obj1);
142
- if (keys.length !== Object.keys(obj2).length) {
143
- return false;
144
- } else {
145
- return keys.every((k) => objectEquals(obj1[k], obj2[k]));
146
- }
147
- }
148
-
149
- /**
150
- * 合并对象
151
- * @param {Object} target 目标对象
152
- * @param {Object[]} source 原对象列表
153
- * @returns {Object} 返回合并后的对象
154
- */
155
- function merge(target, ...source) {
156
- return Object.assign(target, ...source);
157
- }
158
-
159
- /* 根据字符串属性路径操作目标对象 */
160
- /**
161
- * 根据字符串属性路径获取目标对象的值
162
- * @example
163
- * let res = {code:200, data:{rows:[], pages:{current:1,pageSize:20}}}
164
- * this._getTargetValueByPath(res, 'data.pages.pageSize'); // 这里会输出20
165
- * @param {Object} target 目标对象
166
- * @param {String} path 字符串属性路径
167
- * @returns {Object} 返回目标对象
168
- */
169
- function getTargetValueByPath(target, path = "data") {
170
- const paths = (path || "data").split(".");
171
- let data = target;
172
- // 属性总个数
173
- let lastIndex = paths.length - 1;
174
- for (const index in paths) {
175
- // 如果路径中没有该属性,则创建一个
176
- if (data[paths[index]] === null || data[paths[index]] === undefined) {
177
- data[paths[index]] = Number(index) !== lastIndex ? {} : undefined;
178
- }
179
- // 逐层向下找到对应属性的值
180
- data = data[paths[index]];
181
- }
182
- return data;
183
- }
184
-
185
- /**
186
- * 根据字符串属性路径设置目标对象的值
187
- * @example
188
- * let res = {code:200, data:{rows:[], pages:{current:1,pageSize:20}}}
189
- * this._setTargetValueByPath(res, 'data.pages.pageSize', 30); // 打印res对象会发现pageSize的值改为了30
190
- * @param {Object} target 目标对象
191
- * @param {String} path 字符串属性路径
192
- * @param {*} value 值
193
- */
194
- function setTargetValueByPath(target, path = "data", value) {
195
- const paths = (path || "data").split(".");
196
- // 变量表达式拼接,最终结果如:target['personInfo']['personName']='xxx';
197
- let fxStr = "";
198
- for (const name of paths) {
199
- fxStr += `['${name}']`;
200
- }
201
- const fn = new Function("target", `target${fxStr}=${value}`);
202
- fn(target);
203
- }
204
-
205
- exports.clone = clone;
206
- exports.cloneDeep = cloneDeep;
207
- exports.getTargetValueByPath = getTargetValueByPath;
208
- exports.jsonToMap = jsonToMap;
209
- exports.mapToJson = mapToJson;
210
- exports.mapToObject = mapToObject;
211
- exports.merge = merge;
212
- exports.objectEquals = objectEquals;
213
- exports.objectToMap = objectToMap;
214
- exports.parseJson = parseJson;
215
- exports.setTargetValueByPath = setTargetValueByPath;
216
- exports.stringifyJson = stringifyJson;
@@ -1,140 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * 获得分页起始数
5
- * @param {Object} pagination 分页参数
6
- * @returns {Array} 返回起始数
7
- */
8
- function getLimit(pagination = { page: 1, pageSize: 10, total: 0, totalPage: 0, pagerCount: 7 }) {
9
- return [pagination.pageSize * (pagination.page - 1), pagination.pageSize * pagination.page];
10
- }
11
-
12
- /**
13
- * 获得总条数
14
- * @param {Object} pagination 分页参数
15
- * @returns {Number} 返回总条数
16
- */
17
- function getTotalPage(pagination = { page: 1, pageSize: 10, total: 0, totalPage: 0, pagerCount: 7 }) {
18
- return Math.ceil((pagination.total || 0) / (pagination.pageSize || 0));
19
- }
20
-
21
- /**
22
- * 获得彩虹分页器
23
- * @param {Object} pagination 分页参数
24
- * @param {Function} callback 回调函数
25
- * @returns {Promise} 返回彩虹分页器数据
26
- */
27
- function getRainbowPager(
28
- pagination = {
29
- page: 1,
30
- pageSize: 10,
31
- total: 0,
32
- totalPage: 0,
33
- pagerCount: 7,
34
- },
35
- callback,
36
- ) {
37
- return new Promise((resolve) => {
38
- // 分页参数
39
- let page = pagination.page || 1;
40
- let totalPage = pagination.totalPage > 0 ? pagination.totalPage : getTotalPage(pagination);
41
- let pagerCount = pagination.pagerCount || 7;
42
-
43
- // 计算参数
44
- let isEven = (pagerCount & 1) === 0;
45
- let left = pagerCount >> 1;
46
- let right = pagerCount >> 1;
47
- let pagerLength = pagerCount;
48
-
49
- // 计算生成的分页器数量
50
- if (isEven) {
51
- right++;
52
- }
53
- if (totalPage < pagerCount) {
54
- pagerLength = totalPage;
55
- }
56
-
57
- // 分页器数组
58
- let pager = new Array(pagerLength);
59
-
60
- // 生成分页器
61
- if (totalPage >= pagerCount) {
62
- if (page <= left) {
63
- for (let i = 0; i < pager.length; i++) {
64
- pager[i] = i + 1;
65
- }
66
- } else if (page > totalPage - right) {
67
- for (let i = 0; i < pager.length; i++) {
68
- pager[i] = i + totalPage - pagerCount + 1;
69
- }
70
- } else {
71
- for (let i = 0; i < pager.length; i++) {
72
- pager[i] = i + page - left + (isEven ? 1 : 0);
73
- }
74
- }
75
- } else {
76
- for (let i = 0; i < pager.length; i++) {
77
- pager[i] = i + 1;
78
- }
79
- }
80
-
81
- // 支持回调函数和Promise
82
- callback && callback(pager);
83
- resolve(pager);
84
- });
85
- }
86
-
87
- /**
88
- * 获得上一页
89
- * @param {Object} pagination 分页参数
90
- * @param {Function} callback 回调函数
91
- * @returns {Promise} 返回上一页
92
- */
93
- function getPrevPage(pagination = { page: 1, pageSize: 10, total: 0, totalPage: 0, pagerCount: 7 }, callback) {
94
- return new Promise((resolve) => {
95
- if (pagination.page > 1) {
96
- pagination.page--;
97
- } else {
98
- pagination.page = 1;
99
- }
100
-
101
- // 支持回调函数和Promise
102
- callback && callback(pagination.page);
103
- resolve(pagination.page);
104
- });
105
- }
106
-
107
- /**
108
- * 获得下一页
109
- * @description 最后一页会根据totalPage参数判断,如果不传此参数,则会根据参数中pageSize和total重新计算总页数
110
- * @param {Object} pagination 分页参数
111
- * @param {Function} callback 回调函数
112
- * @returns {Promise} 返回下一页
113
- */
114
- function getNextPage(pagination = { page: 1, pageSize: 10, total: 0, totalPage: 0, pagerCount: 7 }, callback) {
115
- return new Promise((resolve) => {
116
- // 获得总页数,如果没有传totalPage,则需要根据传的pageSize和total计算
117
- let totalPage = pagination.totalPage > 0 ? pagination.totalPage : getTotalPage(pagination);
118
-
119
- // 计算当前页大于0和小与0的情况
120
- if (pagination.page > 0) {
121
- if (pagination.page < totalPage) {
122
- pagination.page++;
123
- } else {
124
- pagination.page = totalPage;
125
- }
126
- } else {
127
- pagination.page = 1;
128
- }
129
-
130
- // 支持回调函数和Promise
131
- callback && callback(pagination.page);
132
- resolve(pagination.page);
133
- });
134
- }
135
-
136
- exports.getLimit = getLimit;
137
- exports.getNextPage = getNextPage;
138
- exports.getPrevPage = getPrevPage;
139
- exports.getRainbowPager = getRainbowPager;
140
- exports.getTotalPage = getTotalPage;
@@ -1,25 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * 生成指定大小的随机整数
5
- * @description n和m参数表示最小和最大范围值,默认0-9之间范围
6
- * @param {Number} min 随机数的最小值,默认 0
7
- * @param {Number} max 随机数的最大值,默认 9
8
- * @returns {Number} 返回指定大小的随机整数
9
- */
10
- function getRandom(min = 0, max = 9) {
11
- return Math.floor(Math.random() * (max - min + 1) + min);
12
- }
13
-
14
- /**
15
- * 生成固定位数的随机整数
16
- * @description 默认是1,代表生成0-9之间一位,如果是2,则生成10-99之间两位,以此类推
17
- * @param {Number} len 固定的位数
18
- * @returns {Number} 返回固定位数的随机数
19
- */
20
- function getRandomDigit(len = 1) {
21
- return Math.floor((Math.random() + Math.floor(Math.random() * 9 + 1)) * Math.pow(10, len - 1));
22
- }
23
-
24
- exports.getRandom = getRandom;
25
- exports.getRandomDigit = getRandomDigit;