@ivujs/i-utils 1.1.16 → 1.1.17

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 (213) hide show
  1. package/README.md +21 -19
  2. package/dist/cjs/index.cjs +5 -400
  3. package/dist/es/index.d.ts +1 -26
  4. package/dist/es/index.mjs +2 -55
  5. package/dist/index.d.ts +11 -2851
  6. package/dist/lib/index.full.umd.js +33 -14240
  7. package/dist/lib/index.full.umd.min.js +2 -64
  8. package/dist/lib/index.full.umd.min.js.map +1 -1
  9. package/dist/resolver/auto-imports.cjs +1 -337
  10. package/dist/resolver/auto-imports.mjs +1 -337
  11. package/dist/resolver/index.cjs +1 -1
  12. package/dist/resolver/index.d.ts +1 -1
  13. package/dist/resolver/index.mjs +1 -1
  14. package/package.json +5 -13
  15. package/dist/cjs/ID-card/index.cjs +0 -87
  16. package/dist/cjs/array/index.cjs +0 -470
  17. package/dist/cjs/clipboard/index.cjs +0 -128
  18. package/dist/cjs/color/index.cjs +0 -193
  19. package/dist/cjs/constants/date.cjs +0 -178
  20. package/dist/cjs/constants/id-card.cjs +0 -52
  21. package/dist/cjs/constants/keycode.cjs +0 -117
  22. package/dist/cjs/constants/lang.cjs +0 -13
  23. package/dist/cjs/constants/math.cjs +0 -13
  24. package/dist/cjs/constants/regexp.cjs +0 -53
  25. package/dist/cjs/constants/sort.cjs +0 -15
  26. package/dist/cjs/cookie/index.cjs +0 -70
  27. package/dist/cjs/crypto/aes/aes.cjs +0 -480
  28. package/dist/cjs/crypto/aes/index.cjs +0 -27
  29. package/dist/cjs/crypto/base32/base32.cjs +0 -357
  30. package/dist/cjs/crypto/base32/index.cjs +0 -41
  31. package/dist/cjs/crypto/base64/base64.cjs +0 -348
  32. package/dist/cjs/crypto/base64/index.cjs +0 -59
  33. package/dist/cjs/crypto/des/des.cjs +0 -257
  34. package/dist/cjs/crypto/des/index.cjs +0 -28
  35. package/dist/cjs/crypto/md5/index.cjs +0 -24
  36. package/dist/cjs/crypto/md5/md5.cjs +0 -897
  37. package/dist/cjs/crypto/sha/sha1/index.cjs +0 -24
  38. package/dist/cjs/crypto/sha/sha1/sha1.cjs +0 -529
  39. package/dist/cjs/crypto/sha/sha256/index.cjs +0 -43
  40. package/dist/cjs/crypto/sha/sha256/sha256.cjs +0 -595
  41. package/dist/cjs/crypto/sha/sha3/index.cjs +0 -41
  42. package/dist/cjs/crypto/sha/sha3/sha3.cjs +0 -624
  43. package/dist/cjs/crypto/sha/sha512/index.cjs +0 -81
  44. package/dist/cjs/crypto/sha/sha512/sha512.cjs +0 -950
  45. package/dist/cjs/crypto/sm/lib/asn1.cjs +0 -149
  46. package/dist/cjs/crypto/sm/lib/ec.cjs +0 -315
  47. package/dist/cjs/crypto/sm/lib/jsbn.cjs +0 -1608
  48. package/dist/cjs/crypto/sm/lib/sm3.cjs +0 -158
  49. package/dist/cjs/crypto/sm/lib/utils.cjs +0 -170
  50. package/dist/cjs/crypto/sm/sm2/index.cjs +0 -112
  51. package/dist/cjs/crypto/sm/sm2/sm2.cjs +0 -231
  52. package/dist/cjs/crypto/sm/sm3/index.cjs +0 -15
  53. package/dist/cjs/crypto/sm/sm3/sm3.cjs +0 -93
  54. package/dist/cjs/crypto/sm/sm4/index.cjs +0 -27
  55. package/dist/cjs/crypto/sm/sm4/sm4.cjs +0 -327
  56. package/dist/cjs/crypto/tea/index.cjs +0 -25
  57. package/dist/cjs/crypto/tea/tea.cjs +0 -187
  58. package/dist/cjs/date/index.cjs +0 -1266
  59. package/dist/cjs/desensitized/index.cjs +0 -75
  60. package/dist/cjs/device/index.cjs +0 -151
  61. package/dist/cjs/dom/index.cjs +0 -129
  62. package/dist/cjs/file/index.cjs +0 -333
  63. package/dist/cjs/function/index.cjs +0 -69
  64. package/dist/cjs/keycode/index.cjs +0 -33
  65. package/dist/cjs/math/index.cjs +0 -278
  66. package/dist/cjs/number/index.cjs +0 -31
  67. package/dist/cjs/object/index.cjs +0 -272
  68. package/dist/cjs/pagination/index.cjs +0 -131
  69. package/dist/cjs/random/index.cjs +0 -24
  70. package/dist/cjs/regexp/index.cjs +0 -100
  71. package/dist/cjs/storage/index.cjs +0 -11
  72. package/dist/cjs/storage/localStorage.cjs +0 -37
  73. package/dist/cjs/storage/sessionStorage.cjs +0 -37
  74. package/dist/cjs/string/index.cjs +0 -358
  75. package/dist/cjs/url/index.cjs +0 -258
  76. package/dist/cjs/validate/index.cjs +0 -468
  77. package/dist/cjs/weapp/index.cjs +0 -142
  78. package/dist/es/ID-card/index.d.ts +0 -31
  79. package/dist/es/ID-card/index.mjs +0 -81
  80. package/dist/es/array/index.d.ts +0 -203
  81. package/dist/es/array/index.mjs +0 -441
  82. package/dist/es/clipboard/index.d.ts +0 -29
  83. package/dist/es/clipboard/index.mjs +0 -122
  84. package/dist/es/color/index.d.ts +0 -52
  85. package/dist/es/color/index.mjs +0 -183
  86. package/dist/es/constants/date.d.ts +0 -174
  87. package/dist/es/constants/date.mjs +0 -176
  88. package/dist/es/constants/id-card.d.ts +0 -43
  89. package/dist/es/constants/id-card.mjs +0 -50
  90. package/dist/es/constants/index.d.ts +0 -7
  91. package/dist/es/constants/keycode.d.ts +0 -103
  92. package/dist/es/constants/keycode.mjs +0 -115
  93. package/dist/es/constants/lang.d.ts +0 -4
  94. package/dist/es/constants/lang.mjs +0 -11
  95. package/dist/es/constants/math.d.ts +0 -4
  96. package/dist/es/constants/math.mjs +0 -11
  97. package/dist/es/constants/regexp.d.ts +0 -24
  98. package/dist/es/constants/regexp.mjs +0 -51
  99. package/dist/es/constants/sort.d.ts +0 -5
  100. package/dist/es/constants/sort.mjs +0 -13
  101. package/dist/es/cookie/index.d.ts +0 -29
  102. package/dist/es/cookie/index.mjs +0 -64
  103. package/dist/es/crypto/aes/aes.d.ts +0 -156
  104. package/dist/es/crypto/aes/aes.mjs +0 -478
  105. package/dist/es/crypto/aes/index.d.ts +0 -16
  106. package/dist/es/crypto/aes/index.mjs +0 -24
  107. package/dist/es/crypto/base32/base32.d.ts +0 -3
  108. package/dist/es/crypto/base32/base32.mjs +0 -353
  109. package/dist/es/crypto/base32/index.d.ts +0 -24
  110. package/dist/es/crypto/base32/index.mjs +0 -36
  111. package/dist/es/crypto/base64/base64.d.ts +0 -5
  112. package/dist/es/crypto/base64/base64.mjs +0 -342
  113. package/dist/es/crypto/base64/index.d.ts +0 -36
  114. package/dist/es/crypto/base64/index.mjs +0 -52
  115. package/dist/es/crypto/des/des.d.ts +0 -52
  116. package/dist/es/crypto/des/des.mjs +0 -255
  117. package/dist/es/crypto/des/index.d.ts +0 -14
  118. package/dist/es/crypto/des/index.mjs +0 -25
  119. package/dist/es/crypto/index.d.ts +0 -8
  120. package/dist/es/crypto/md5/index.d.ts +0 -13
  121. package/dist/es/crypto/md5/index.mjs +0 -21
  122. package/dist/es/crypto/md5/md5.d.ts +0 -144
  123. package/dist/es/crypto/md5/md5.mjs +0 -894
  124. package/dist/es/crypto/sha/index.d.ts +0 -4
  125. package/dist/es/crypto/sha/sha1/index.d.ts +0 -13
  126. package/dist/es/crypto/sha/sha1/index.mjs +0 -21
  127. package/dist/es/crypto/sha/sha1/sha1.d.ts +0 -2
  128. package/dist/es/crypto/sha/sha1/sha1.mjs +0 -526
  129. package/dist/es/crypto/sha/sha256/index.d.ts +0 -26
  130. package/dist/es/crypto/sha/sha256/index.mjs +0 -38
  131. package/dist/es/crypto/sha/sha256/sha256.d.ts +0 -4
  132. package/dist/es/crypto/sha/sha256/sha256.mjs +0 -590
  133. package/dist/es/crypto/sha/sha3/index.d.ts +0 -24
  134. package/dist/es/crypto/sha/sha3/index.mjs +0 -36
  135. package/dist/es/crypto/sha/sha3/sha3.d.ts +0 -4
  136. package/dist/es/crypto/sha/sha3/sha3.mjs +0 -619
  137. package/dist/es/crypto/sha/sha512/index.d.ts +0 -52
  138. package/dist/es/crypto/sha/sha512/index.mjs +0 -72
  139. package/dist/es/crypto/sha/sha512/sha512.d.ts +0 -8
  140. package/dist/es/crypto/sha/sha512/sha512.mjs +0 -941
  141. package/dist/es/crypto/sm/index.d.ts +0 -3
  142. package/dist/es/crypto/sm/lib/asn1.d.ts +0 -12
  143. package/dist/es/crypto/sm/lib/asn1.mjs +0 -146
  144. package/dist/es/crypto/sm/lib/ec.d.ts +0 -126
  145. package/dist/es/crypto/sm/lib/ec.mjs +0 -312
  146. package/dist/es/crypto/sm/lib/jsbn.d.ts +0 -198
  147. package/dist/es/crypto/sm/lib/jsbn.mjs +0 -1605
  148. package/dist/es/crypto/sm/lib/sm3.d.ts +0 -5
  149. package/dist/es/crypto/sm/lib/sm3.mjs +0 -155
  150. package/dist/es/crypto/sm/lib/utils.d.ts +0 -53
  151. package/dist/es/crypto/sm/lib/utils.mjs +0 -158
  152. package/dist/es/crypto/sm/sm2/index.d.ts +0 -71
  153. package/dist/es/crypto/sm/sm2/index.mjs +0 -101
  154. package/dist/es/crypto/sm/sm2/sm2.d.ts +0 -34
  155. package/dist/es/crypto/sm/sm2/sm2.mjs +0 -220
  156. package/dist/es/crypto/sm/sm3/index.d.ts +0 -7
  157. package/dist/es/crypto/sm/sm3/index.mjs +0 -13
  158. package/dist/es/crypto/sm/sm3/sm3.d.ts +0 -1
  159. package/dist/es/crypto/sm/sm3/sm3.mjs +0 -91
  160. package/dist/es/crypto/sm/sm4/index.d.ts +0 -16
  161. package/dist/es/crypto/sm/sm4/index.mjs +0 -24
  162. package/dist/es/crypto/sm/sm4/sm4.d.ts +0 -2
  163. package/dist/es/crypto/sm/sm4/sm4.mjs +0 -324
  164. package/dist/es/crypto/tea/index.d.ts +0 -14
  165. package/dist/es/crypto/tea/index.mjs +0 -22
  166. package/dist/es/crypto/tea/tea.d.ts +0 -69
  167. package/dist/es/crypto/tea/tea.mjs +0 -185
  168. package/dist/es/date/index.d.ts +0 -547
  169. package/dist/es/date/index.mjs +0 -1179
  170. package/dist/es/desensitized/index.d.ts +0 -38
  171. package/dist/es/desensitized/index.mjs +0 -69
  172. package/dist/es/device/index.d.ts +0 -67
  173. package/dist/es/device/index.mjs +0 -137
  174. package/dist/es/dom/index.d.ts +0 -57
  175. package/dist/es/dom/index.mjs +0 -119
  176. package/dist/es/file/index.d.ts +0 -93
  177. package/dist/es/file/index.mjs +0 -317
  178. package/dist/es/function/index.d.ts +0 -23
  179. package/dist/es/function/index.mjs +0 -65
  180. package/dist/es/keycode/index.d.ts +0 -12
  181. package/dist/es/keycode/index.mjs +0 -30
  182. package/dist/es/math/index.d.ts +0 -66
  183. package/dist/es/math/index.mjs +0 -268
  184. package/dist/es/number/index.d.ts +0 -14
  185. package/dist/es/number/index.mjs +0 -28
  186. package/dist/es/object/index.d.ts +0 -83
  187. package/dist/es/object/index.mjs +0 -259
  188. package/dist/es/pagination/index.d.ts +0 -34
  189. package/dist/es/pagination/index.mjs +0 -125
  190. package/dist/es/random/index.d.ts +0 -15
  191. package/dist/es/random/index.mjs +0 -21
  192. package/dist/es/regexp/index.d.ts +0 -63
  193. package/dist/es/regexp/index.mjs +0 -89
  194. package/dist/es/storage/index.d.ts +0 -7
  195. package/dist/es/storage/index.mjs +0 -9
  196. package/dist/es/storage/localStorage.d.ts +0 -21
  197. package/dist/es/storage/localStorage.mjs +0 -32
  198. package/dist/es/storage/sessionStorage.d.ts +0 -21
  199. package/dist/es/storage/sessionStorage.mjs +0 -32
  200. package/dist/es/string/index.d.ts +0 -121
  201. package/dist/es/string/index.mjs +0 -339
  202. package/dist/es/url/index.d.ts +0 -118
  203. package/dist/es/url/index.mjs +0 -240
  204. package/dist/es/validate/index.d.ts +0 -228
  205. package/dist/es/validate/index.mjs +0 -431
  206. package/dist/es/weapp/index.d.ts +0 -57
  207. package/dist/es/weapp/index.mjs +0 -131
  208. package/dist/lib/index.full.cjs.js +0 -14264
  209. package/dist/lib/index.full.cjs.min.js +0 -69
  210. package/dist/lib/index.full.cjs.min.js.map +0 -1
  211. package/dist/lib/index.full.esm.js +0 -13910
  212. package/dist/lib/index.full.esm.min.js +0 -64
  213. package/dist/lib/index.full.esm.min.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ivujs/i-utils",
3
3
  "moduleName": "iUtils",
4
- "version": "1.1.16",
4
+ "version": "1.1.17",
5
5
  "type": "module",
6
6
  "description": "前端模块化 JavaScript 工具库",
7
7
  "author": "<gao911222@163.com>",
@@ -10,13 +10,6 @@
10
10
  "module": "dist/es/index.mjs",
11
11
  "unpkg": "dist/lib/index.full.umd.min.js",
12
12
  "types": "dist/index.d.ts",
13
- "typesVersions": {
14
- "*": {
15
- "*": [
16
- "./dist/index.d.ts"
17
- ]
18
- }
19
- },
20
13
  "exports": {
21
14
  ".": {
22
15
  "types": "./dist/index.d.ts",
@@ -29,17 +22,16 @@
29
22
  "require": "./dist/resolver/index.cjs"
30
23
  },
31
24
  "./es": {
32
- "types": "./dist/es/index.d.ts",
25
+ "types": "./dist/index.d.ts",
33
26
  "import": "./dist/es/index.mjs"
34
27
  },
35
28
  "./cjs": {
36
29
  "types": "./dist/index.d.ts",
37
30
  "require": "./dist/cjs/index.cjs"
38
31
  },
39
- "./lib": {
40
- "types": "./dist/index.d.ts",
41
- "import": "./dist/lib/index.full.esm.js",
42
- "require": "./dist/lib/index.full.cjs.js"
32
+ "./umd": {
33
+ "types": "./dist/es/index.d.ts",
34
+ "default": "./dist/lib/index.full.umd.min.js"
43
35
  }
44
36
  },
45
37
  "scripts": {
@@ -1,87 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('../validate/index.cjs');
4
- var index$1 = require('../date/index.cjs');
5
- var idCard = require('../constants/id-card.cjs');
6
-
7
- /**
8
- * 根据身份证号码获取信息
9
- * @description 能获取到 籍贯,出生日期,年龄,性别
10
- * @param {String} idCard 身份证号码,支持一代15位和二代18位
11
- * @returns {Object} 返回身份证信息对象
12
- */
13
- function getInfoByIDCard(idCard) {
14
- if (index.isNull(idCard))
15
- return;
16
- return {
17
- // 省份
18
- province: getProvinceByIDCard(idCard),
19
- // 生日
20
- birthday: getBirthdayByIDCard(idCard),
21
- // 年龄
22
- age: getAgeByIDCard(idCard),
23
- // 性别
24
- sex: getSexByIDCard(idCard),
25
- };
26
- }
27
- /**
28
- * 根据身份证号码获得生日
29
- * @param {String} idCard 身份证号码,支持一代15位和二代18位
30
- * @returns {String} 返回生日
31
- */
32
- function getBirthdayByIDCard(idCard) {
33
- if (index.isNull(idCard))
34
- return;
35
- // 15位身份证
36
- if (idCard.length === 15) {
37
- return "19" + idCard.substring(6, 8) + "-" + idCard.substring(8, 10) + "-" + idCard.substring(10, 12);
38
- }
39
- // 18位身份证
40
- if (idCard.length === 18) {
41
- return idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
42
- }
43
- }
44
- /**
45
- * 根据身份证号码获得年龄
46
- * @param {String} idCard 身份证号码,支持一代15位和二代18位
47
- * @returns {Number} 返回年龄
48
- */
49
- function getAgeByIDCard(idCard) {
50
- if (index.isNull(idCard))
51
- return;
52
- let birthday = getBirthdayByIDCard(idCard);
53
- return index$1.getAge(index$1.parseDate(birthday));
54
- }
55
- /**
56
- * 根据身份证号码获得性别
57
- * @param {String} idCard 身份证号码,支持一代15位和二代18位
58
- * @returns {String} 返回性别
59
- */
60
- function getSexByIDCard(idCard$1) {
61
- if (index.isNull(idCard$1))
62
- return;
63
- // 15位身份证
64
- if (idCard$1.length === 15) {
65
- return Number(idCard$1.substring(14)) % 2 === 0 ? idCard.ID_CARD.SEX.WOMAN : idCard.ID_CARD.SEX.MAN;
66
- }
67
- // 18位身份证
68
- if (idCard$1.length === 18) {
69
- return Number(idCard$1.substring(16, 17)) % 2 === 0 ? idCard.ID_CARD.SEX.WOMAN : idCard.ID_CARD.SEX.MAN;
70
- }
71
- }
72
- /**
73
- * 根据身份证号码获得省份
74
- * @param {String} idCard 身份证号码,支持一代15位和二代18位
75
- * @returns {String} 返回省份
76
- */
77
- function getProvinceByIDCard(idCard$1) {
78
- if (index.isNull(idCard$1))
79
- return;
80
- return idCard.ID_CARD.PROVINCE[idCard$1.substring(0, 2)];
81
- }
82
-
83
- exports.getAgeByIDCard = getAgeByIDCard;
84
- exports.getBirthdayByIDCard = getBirthdayByIDCard;
85
- exports.getInfoByIDCard = getInfoByIDCard;
86
- exports.getProvinceByIDCard = getProvinceByIDCard;
87
- exports.getSexByIDCard = getSexByIDCard;
@@ -1,470 +0,0 @@
1
- 'use strict';
2
-
3
- var sort = require('../constants/sort.cjs');
4
- var index = require('../validate/index.cjs');
5
-
6
- /* 数组计算 */
7
- /**
8
- * 数组最小值
9
- * @param {Array} array 数组
10
- * @returns {Number} 返回最小值
11
- */
12
- function arrayMin(array) {
13
- return Math.min.apply(null, array);
14
- }
15
- /**
16
- * 数组最大值
17
- * @param {Array} array 数组
18
- * @returns {Number} 返回最大值
19
- */
20
- function arrayMax(array) {
21
- return Math.max.apply(null, array);
22
- }
23
- /**
24
- * 数组求和
25
- * @param {Array} array 数组
26
- * @returns {Number} 返回和
27
- */
28
- function arraySum(array) {
29
- return array.reduce(function (pre, cur) {
30
- return pre + cur;
31
- });
32
- }
33
- /**
34
- * 数组求平均值
35
- * @param {Array} array 数组
36
- * @returns {Number} 返回平均数
37
- */
38
- function arrayAvg(array) {
39
- return arraySum(array) / array.length;
40
- }
41
- /* 数组比较 */
42
- /**
43
- * 数组中是否包含指定的元素
44
- * @param {String|Number} value 元素
45
- * @param {Array} array 查找的数组
46
- * @returns {Boolean} 返回结果
47
- */
48
- function inArray(value, array) {
49
- if (index.isNull(value))
50
- return false;
51
- return array.includes(value);
52
- }
53
- /**
54
- * 比较两个数组是否相等
55
- * @param {Array} array1 数组1
56
- * @param {Array} array2 数组2
57
- * @returns {Boolean} 返回结果
58
- */
59
- function arrayEquals(array1, array2) {
60
- if (array1 === array2)
61
- return true;
62
- if (array1.length !== array2.length)
63
- return false;
64
- return array1.every((v, i) => v === array2[i]);
65
- }
66
- /* 数组操作 */
67
- /**
68
- * 生成指定长度的数组
69
- * @param {Number} length 长度,默认 0
70
- * @returns {Array} 返回数组
71
- */
72
- function arrayCreate(length = 0) {
73
- return [...Array(length).keys()];
74
- }
75
- /**
76
- * 数组指定位置添加元素
77
- * @description 如果数组为空,则在0位置添加元素
78
- * @param {Array} array 数组
79
- * @param {Number} index 下标位置,默认0
80
- * @param {*} value 添加的元素
81
- * @returns {Array} 返回操作后的数组
82
- */
83
- function arrayInsert(array = [], index = 0, value = undefined) {
84
- if (index < 0)
85
- return array;
86
- if (array.length === 0) {
87
- array.push(value);
88
- }
89
- else {
90
- if (index > array.length - 1) {
91
- return array;
92
- }
93
- array.splice(index, 0, value);
94
- }
95
- return array;
96
- }
97
- /**
98
- * 数组指定位置前面添加元素
99
- * @description 如果数组为空,则在0位置添加元素
100
- * @param {Array} array 数组
101
- * @param {Number} index 下标位置,默认0
102
- * @param {*} value 添加的元素
103
- * @returns {Array} 返回操作后的数组
104
- */
105
- function arrayInsertBefore(array = [], index = 0, value = undefined) {
106
- if (index < 0)
107
- return array;
108
- if (array.length === 0) {
109
- array.push(value);
110
- }
111
- else {
112
- if (index > array.length - 1) {
113
- return array;
114
- }
115
- array.splice(index, 0, value);
116
- }
117
- return array;
118
- }
119
- /**
120
- * 数组指定位置后面添加元素
121
- * @description 如果数组为空,则在0位置添加元素
122
- * @param {Array} array 数组
123
- * @param {Number} index 下标位置,默认0
124
- * @param {*} value 添加的元素
125
- * @returns {Array} 返回操作后的数组
126
- */
127
- function arrayInsertAfter(array = [], index = 0, value = undefined) {
128
- if (index < 0)
129
- return array;
130
- if (array.length === 0) {
131
- array.push(value);
132
- }
133
- else {
134
- if (index > array.length - 1) {
135
- return array;
136
- }
137
- array.splice(index, 0, array.splice(index, 1, value)[0]);
138
- }
139
- return array;
140
- }
141
- /**
142
- * 数组指定位置删除元素
143
- * @param {Array} array 数组
144
- * @param {Number} index 下标位置,默认0
145
- * @returns {Array} 返回操作后的数组
146
- */
147
- function arrayRemove(array = [], index = 0) {
148
- if (index < 0 || index > array.length - 1)
149
- return array;
150
- array.splice(index, 1);
151
- return array;
152
- }
153
- /**
154
- * 数组指定位置前面删除元素
155
- * @param {Array} array 数组
156
- * @param {Number} index 下标位置,默认0
157
- * @returns {Array} 返回操作后的数组
158
- */
159
- function arrayRemoveBefore(array = [], index = 0) {
160
- if (index <= 0 || index > array.length - 1)
161
- return array;
162
- array.splice(index - 1, 1);
163
- return array;
164
- }
165
- /**
166
- * 数组指定位置后面删除元素
167
- * @param {Array} array 数组
168
- * @param {Number} index 下标位置,默认0
169
- * @returns {Array} 返回操作后的数组
170
- */
171
- function arrayRemoveAfter(array = [], index = 0) {
172
- if (index < 0 || index > array.length - 1)
173
- return array;
174
- array.splice(index + 1, 1);
175
- return array;
176
- }
177
- /**
178
- * 数组置顶
179
- * @param {Array} array 数组
180
- * @param {Number} index 下标位置,默认0
181
- * @returns {Array} 返回操作后的数组
182
- */
183
- function arrayTop(array = [], index = 0) {
184
- if (index < 0 || index > array.length - 1)
185
- return array;
186
- array.unshift(array.splice(index, 1)[0]);
187
- return array;
188
- }
189
- /**
190
- * 数组置尾
191
- * @param {Array} array 数组
192
- * @param {Number} index 下标位置,默认0
193
- * @returns {Array} 返回操作后的数组
194
- */
195
- function arrayBottom(array = [], index = 0) {
196
- if (index < 0 || index > array.length - 1)
197
- return array;
198
- array.push(array.splice(index, 1)[0]);
199
- return array;
200
- }
201
- /**
202
- * 数组向上移动
203
- * @param {Array} array 数组
204
- * @param {Number} index 下标位置,默认0
205
- * @returns {Array} 返回操作后的数组
206
- */
207
- function arrayUp(array = [], index = 0) {
208
- if (index < 0 || index > array.length - 1)
209
- return array;
210
- if (index > 0) {
211
- array.splice(index - 1, 0, array.splice(index, 1)[0]);
212
- }
213
- else {
214
- array.push(array.splice(index, 1)[0]);
215
- }
216
- return array;
217
- }
218
- /**
219
- * 数组向下移动
220
- * @param {Array} array 数组
221
- * @param {Number} index 下标位置,默认0
222
- * @returns {Array} 返回操作后的数组
223
- */
224
- function arrayDown(array = [], index = 0) {
225
- if (index < 0 || index > array.length - 1)
226
- return array;
227
- if (index < array.length - 1) {
228
- array.splice(index + 1, 0, array.splice(index, 1)[0]);
229
- }
230
- else {
231
- array.unshift(array.splice(index, 1)[0]);
232
- }
233
- return array;
234
- }
235
- /**
236
- * 数组交换元素
237
- * @param {Array} array 数组
238
- * @param {Number} sourceIndex 原索引
239
- * @param {Number} targetIndex 目标索引
240
- * @returns {Array} 返回操作后的数组
241
- */
242
- function arraySwap(array, sourceIndex, targetIndex) {
243
- if (sourceIndex < 0 || targetIndex < 0 || sourceIndex > array.length - 1 || targetIndex > array.length - 1) {
244
- return array;
245
- }
246
- [array[targetIndex], array[sourceIndex]] = [array[sourceIndex], array[targetIndex]];
247
- return array;
248
- }
249
- /**
250
- * 数组排序
251
- * @param {Array} array 数组
252
- * @param {Number} mode 排序模式,参考常量集合中 数组常量,默认是升序
253
- * @returns {Array} 返回操作后的数组
254
- */
255
- function arraySort(array, mode = sort.SORT.ASC) {
256
- return array.sort((a, b) => {
257
- switch (mode) {
258
- // 升序
259
- case sort.SORT.ASC:
260
- return a - b;
261
- // 降序
262
- case sort.SORT.DESC:
263
- return b - a;
264
- // 随机
265
- case sort.SORT.RANDOM:
266
- return Math.random() - 0.5;
267
- // 默认
268
- default:
269
- return array;
270
- }
271
- });
272
- }
273
- /**
274
- * 数组属性混合排序
275
- * @description 排序默认为asc升序
276
- * @param {Array} array 数组
277
- * @param {Array} props 排序的属性
278
- * @returns {Array} 返回操作后的数组
279
- */
280
- function arraySortBy(array, props) {
281
- return array.sort((a, b) => {
282
- for (let item of props) {
283
- // 排序配置
284
- let prop = "", order = "asc";
285
- if (index.isObject(item)) {
286
- prop = item.prop;
287
- order = item.order || "asc";
288
- }
289
- else {
290
- prop = item;
291
- order = "asc";
292
- }
293
- // 排序逻辑
294
- if (a[prop] < b[prop]) {
295
- return order === "asc" ? -1 : 1;
296
- }
297
- if (a[prop] > b[prop]) {
298
- return order === "asc" ? 1 : -1;
299
- }
300
- }
301
- return 0;
302
- });
303
- }
304
- /**
305
- * 数组元素去重
306
- * @param {Array} array 数组
307
- * @returns {Array} 返回操作后的数组
308
- */
309
- function arrayUnique(array) {
310
- if (index.isEmpty(array))
311
- return [];
312
- return Array.from(new Set(array));
313
- }
314
- /**
315
- * 数组打乱元素
316
- * @description 可以适用于一些抽奖人员列表打乱顺序
317
- * @param {Array} array 数组
318
- * @returns {Array} 返回操作后的数组
319
- */
320
- function arrayShuffle(array) {
321
- for (let i = 1; i < array.length; i++) {
322
- const random = Math.floor(Math.random() * (i + 1));
323
- [array[random], array[i]] = [array[i], array[random]];
324
- }
325
- return array;
326
- }
327
- /* 数组转换 */
328
- /**
329
- * 普通数组转树形结构
330
- * @description 包含id和pid属性关系的一维数组,转为children的树形结构
331
- * @param {Array} array 数组
332
- * @param {Object} setting 配置项
333
- * @returns {Array} 返回树形节点
334
- */
335
- function arrayToTree(array, setting = { key: "id", parentKey: "pid", childrenKey: "children" }) {
336
- let key = setting.key, parentKey = setting.parentKey, childrenKey = setting.childrenKey;
337
- // 数组或者key是否为空
338
- if (!array || array.length === 0 || !key || key === "")
339
- return [];
340
- // 获得子节点方法
341
- const nodeChildren = function (node, childrenKey, newChildren) {
342
- if (!node) {
343
- return null;
344
- }
345
- if (typeof newChildren !== "undefined") {
346
- node[childrenKey] = newChildren;
347
- }
348
- return node[childrenKey];
349
- };
350
- // 声明变量
351
- let result = [];
352
- let tempMap = {};
353
- for (let i = 0; i < array.length; i++) {
354
- // 如果源数据数组中有children,则需要删除掉,否则会导致和之前的children合并
355
- array[i][childrenKey] && delete array[i][childrenKey];
356
- tempMap[array[i][key]] = array[i];
357
- }
358
- for (let i = 0; i < array.length; i++) {
359
- let parent = tempMap[array[i][parentKey]];
360
- if (parent && array[i][key] !== array[i][parentKey]) {
361
- let children = nodeChildren(parent, childrenKey);
362
- if (!children) {
363
- children = nodeChildren(parent, childrenKey, []);
364
- }
365
- children.push(array[i]);
366
- }
367
- else {
368
- result.push(array[i]);
369
- }
370
- }
371
- // 返回结果
372
- return result;
373
- }
374
- /**
375
- * 树形结构转普通数组
376
- * @param {Array} nodes 树形节点
377
- * @param {Object} setting 配置项
378
- * @returns {Array} 返回普通数组
379
- */
380
- function treeToArray(nodes, setting = { childrenKey: "children" }) {
381
- let childrenKey = setting.childrenKey;
382
- let result = [];
383
- for (let node of nodes) {
384
- // 删除掉多余空的children
385
- if (node[childrenKey] && !node[childrenKey].length) {
386
- delete node[childrenKey];
387
- }
388
- result.push(node);
389
- // 继续执行
390
- if (node[childrenKey] && node[childrenKey].length) {
391
- let array = treeToArray(node[childrenKey], setting);
392
- array && result.push(...array);
393
- }
394
- }
395
- // 返回结果
396
- return result;
397
- }
398
- /* 数组求并集,交集,差集等 */
399
- /**
400
- * 数组求并集
401
- * @description 数组1 和 数组2 合并一起的元素集合
402
- * @param {Array} array1 数组1
403
- * @param {Array} array2 数组2
404
- * @returns {Array} 返回数组
405
- */
406
- function arrayUnion(array1, array2) {
407
- return [...new Set(array1.concat(array2))];
408
- }
409
- /**
410
- * 数组求交集
411
- * @description 数组1 和 数组2 相同的元素集合
412
- * @param {Array} array1 数组1
413
- * @param {Array} array2 数组2
414
- * @returns {Array} 返回数组
415
- */
416
- function arrayIntersect(array1, array2) {
417
- return [...new Set(array1)].filter((item) => array2.includes(item));
418
- }
419
- /**
420
- * 数组求差集
421
- * @description 数组1 中不包含 数组2 的元素集合
422
- * @param {Array} array1 数组1
423
- * @param {Array} array2 数组2
424
- * @returns {Array} 返回数组
425
- */
426
- function arrayDifference(array1, array2) {
427
- return [...new Set(array1)].filter((item) => !array2.includes(item));
428
- }
429
- /**
430
- * 数组求补集
431
- * @description 数组1 和 数组2 不相同的元素集合
432
- * @param {Array} array1 数组1
433
- * @param {Array} array2 数组2
434
- * @returns {Array} 返回数组
435
- */
436
- function arrayComplement(array1, array2) {
437
- return [
438
- ...[...new Set(array1)].filter((item) => !array2.includes(item)),
439
- ...[...new Set(array2)].filter((item) => !array1.includes(item)),
440
- ];
441
- }
442
-
443
- exports.arrayAvg = arrayAvg;
444
- exports.arrayBottom = arrayBottom;
445
- exports.arrayComplement = arrayComplement;
446
- exports.arrayCreate = arrayCreate;
447
- exports.arrayDifference = arrayDifference;
448
- exports.arrayDown = arrayDown;
449
- exports.arrayEquals = arrayEquals;
450
- exports.arrayInsert = arrayInsert;
451
- exports.arrayInsertAfter = arrayInsertAfter;
452
- exports.arrayInsertBefore = arrayInsertBefore;
453
- exports.arrayIntersect = arrayIntersect;
454
- exports.arrayMax = arrayMax;
455
- exports.arrayMin = arrayMin;
456
- exports.arrayRemove = arrayRemove;
457
- exports.arrayRemoveAfter = arrayRemoveAfter;
458
- exports.arrayRemoveBefore = arrayRemoveBefore;
459
- exports.arrayShuffle = arrayShuffle;
460
- exports.arraySort = arraySort;
461
- exports.arraySortBy = arraySortBy;
462
- exports.arraySum = arraySum;
463
- exports.arraySwap = arraySwap;
464
- exports.arrayToTree = arrayToTree;
465
- exports.arrayTop = arrayTop;
466
- exports.arrayUnion = arrayUnion;
467
- exports.arrayUnique = arrayUnique;
468
- exports.arrayUp = arrayUp;
469
- exports.inArray = inArray;
470
- exports.treeToArray = treeToArray;