tools-min-ns 1.10.3 → 1.11.0

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
@@ -5,6 +5,10 @@ cnpm i tools-min-ns --save
5
5
  ```
6
6
 
7
7
  # updates
8
+ ## v1.10.3
9
+ > ArrayUtil
10
+ 新增universalSort
11
+
8
12
  ## v1.10.3
9
13
  > TransferUtil
10
14
  getFileSizeByBytes修复参数n
@@ -105,5 +105,35 @@ declare namespace ArrayUtil {
105
105
  * randomSortArr([{a:1},{a:2},{a:3}]) => [{a:3},{a:1},{a:2}]
106
106
  */
107
107
  function randomSortArr<T>(arr: T[]): T[];
108
+ /**
109
+ * 通用排序函数
110
+ * @param array 要排序的数组
111
+ * @param key 排序依据的键(如果数组元素是对象)或自定义排序函数
112
+ * @param order 排序顺序('asc' 表示升序,'desc' 表示降序)
113
+ * @returns 排序后的数组
114
+ * @example
115
+ *
116
+
117
+ // 排序数字数组
118
+ console.log(universalSort([5, 3, 8, 1, 2])); // [1, 2, 3, 5, 8]
119
+
120
+ // 排序字符串数组
121
+ console.log(universalSort(['banana', 'apple', 'cherry'])); // ['apple', 'banana', 'cherry']
122
+
123
+ // 排序对象数组(按对象属性)
124
+ const objArray = [
125
+ { name: 'John', age: 30 },
126
+ { name: 'Jane', age: 25 },
127
+ { name: 'Jim', age: 35 }
128
+ ];
129
+ console.log(universalSort(objArray, 'age')); // [{ name: 'Jane', age: 25 }, { name: 'John', age: 30 }, { name: 'Jim', age: 35 }]
130
+
131
+ // 按自定义函数排序
132
+ console.log(universalSort(objArray, obj => obj.name.length)); // [{ name: 'Jim', age: 35 }, { name: 'John', age: 30 }, { name: 'Jane', age: 25 }]
133
+
134
+ // 按降序排序
135
+ console.log(universalSort([5, 3, 8, 1, 2], null, 'desc')); // [8, 5, 3, 2, 1]
136
+ */
137
+ function universalSort<T>(array: T[], key?: keyof T | ((item: T) => any), order?: 'asc' | 'desc'): T[];
108
138
  }
109
139
  export default ArrayUtil;
@@ -243,5 +243,71 @@ var ArrayUtil;
243
243
  });
244
244
  }
245
245
  ArrayUtil.randomSortArr = randomSortArr;
246
+ /**
247
+ * 通用排序函数
248
+ * @param array 要排序的数组
249
+ * @param key 排序依据的键(如果数组元素是对象)或自定义排序函数
250
+ * @param order 排序顺序('asc' 表示升序,'desc' 表示降序)
251
+ * @returns 排序后的数组
252
+ * @example
253
+ *
254
+ // 排序数字数组
255
+ console.log(universalSort([5, 3, 8, 1, 2])); // [1, 2, 3, 5, 8]
256
+ // 排序字符串数组
257
+ console.log(universalSort(['banana', 'apple', 'cherry'])); // ['apple', 'banana', 'cherry']
258
+ // 排序对象数组(按对象属性)
259
+ const objArray = [
260
+ { name: 'John', age: 30 },
261
+ { name: 'Jane', age: 25 },
262
+ { name: 'Jim', age: 35 }
263
+ ];
264
+ console.log(universalSort(objArray, 'age')); // [{ name: 'Jane', age: 25 }, { name: 'John', age: 30 }, { name: 'Jim', age: 35 }]
265
+ // 按自定义函数排序
266
+ console.log(universalSort(objArray, obj => obj.name.length)); // [{ name: 'Jim', age: 35 }, { name: 'John', age: 30 }, { name: 'Jane', age: 25 }]
267
+ // 按降序排序
268
+ console.log(universalSort([5, 3, 8, 1, 2], null, 'desc')); // [8, 5, 3, 2, 1]
269
+ */
270
+ function universalSort(array, key, order) {
271
+ if (order === void 0) {
272
+ order = 'asc';
273
+ }
274
+ // 检查排序顺序是否合法
275
+ if (order !== 'asc' && order !== 'desc') {
276
+ throw new Error("排序顺序必须是 'asc' 或 'desc'");
277
+ }
278
+ // 比较函数生成器
279
+ var compareFunction = function compareFunction(a, b) {
280
+ var valA, valB;
281
+ // 如果 key 是函数,调用它来获取比较值
282
+ if (typeof key === 'function') {
283
+ valA = key(a);
284
+ valB = key(b);
285
+ } else if (key) {
286
+ // 如果 key 是字符串,获取对象属性的值
287
+ valA = a[key];
288
+ valB = b[key];
289
+ } else {
290
+ // 如果没有 key,直接比较值
291
+ valA = a;
292
+ valB = b;
293
+ }
294
+ // 转换为小写字符串比较(针对字符串情况)
295
+ if (typeof valA === 'string' && typeof valB === 'string') {
296
+ valA = valA.toLowerCase();
297
+ valB = valB.toLowerCase();
298
+ }
299
+ // 比较逻辑
300
+ if (valA < valB) {
301
+ return order === 'asc' ? -1 : 1;
302
+ }
303
+ if (valA > valB) {
304
+ return order === 'asc' ? 1 : -1;
305
+ }
306
+ return 0;
307
+ };
308
+ // 使用比较函数对数组进行排序
309
+ return array.sort(compareFunction);
310
+ }
311
+ ArrayUtil.universalSort = universalSort;
246
312
  })(ArrayUtil || (ArrayUtil = {}));
247
313
  export default ArrayUtil;
@@ -105,5 +105,35 @@ declare namespace ArrayUtil {
105
105
  * randomSortArr([{a:1},{a:2},{a:3}]) => [{a:3},{a:1},{a:2}]
106
106
  */
107
107
  function randomSortArr<T>(arr: T[]): T[];
108
+ /**
109
+ * 通用排序函数
110
+ * @param array 要排序的数组
111
+ * @param key 排序依据的键(如果数组元素是对象)或自定义排序函数
112
+ * @param order 排序顺序('asc' 表示升序,'desc' 表示降序)
113
+ * @returns 排序后的数组
114
+ * @example
115
+ *
116
+
117
+ // 排序数字数组
118
+ console.log(universalSort([5, 3, 8, 1, 2])); // [1, 2, 3, 5, 8]
119
+
120
+ // 排序字符串数组
121
+ console.log(universalSort(['banana', 'apple', 'cherry'])); // ['apple', 'banana', 'cherry']
122
+
123
+ // 排序对象数组(按对象属性)
124
+ const objArray = [
125
+ { name: 'John', age: 30 },
126
+ { name: 'Jane', age: 25 },
127
+ { name: 'Jim', age: 35 }
128
+ ];
129
+ console.log(universalSort(objArray, 'age')); // [{ name: 'Jane', age: 25 }, { name: 'John', age: 30 }, { name: 'Jim', age: 35 }]
130
+
131
+ // 按自定义函数排序
132
+ console.log(universalSort(objArray, obj => obj.name.length)); // [{ name: 'Jim', age: 35 }, { name: 'John', age: 30 }, { name: 'Jane', age: 25 }]
133
+
134
+ // 按降序排序
135
+ console.log(universalSort([5, 3, 8, 1, 2], null, 'desc')); // [8, 5, 3, 2, 1]
136
+ */
137
+ function universalSort<T>(array: T[], key?: keyof T | ((item: T) => any), order?: 'asc' | 'desc'): T[];
108
138
  }
109
139
  export default ArrayUtil;
@@ -253,5 +253,71 @@ var ArrayUtil;
253
253
  });
254
254
  }
255
255
  ArrayUtil.randomSortArr = randomSortArr;
256
+ /**
257
+ * 通用排序函数
258
+ * @param array 要排序的数组
259
+ * @param key 排序依据的键(如果数组元素是对象)或自定义排序函数
260
+ * @param order 排序顺序('asc' 表示升序,'desc' 表示降序)
261
+ * @returns 排序后的数组
262
+ * @example
263
+ *
264
+ // 排序数字数组
265
+ console.log(universalSort([5, 3, 8, 1, 2])); // [1, 2, 3, 5, 8]
266
+ // 排序字符串数组
267
+ console.log(universalSort(['banana', 'apple', 'cherry'])); // ['apple', 'banana', 'cherry']
268
+ // 排序对象数组(按对象属性)
269
+ const objArray = [
270
+ { name: 'John', age: 30 },
271
+ { name: 'Jane', age: 25 },
272
+ { name: 'Jim', age: 35 }
273
+ ];
274
+ console.log(universalSort(objArray, 'age')); // [{ name: 'Jane', age: 25 }, { name: 'John', age: 30 }, { name: 'Jim', age: 35 }]
275
+ // 按自定义函数排序
276
+ console.log(universalSort(objArray, obj => obj.name.length)); // [{ name: 'Jim', age: 35 }, { name: 'John', age: 30 }, { name: 'Jane', age: 25 }]
277
+ // 按降序排序
278
+ console.log(universalSort([5, 3, 8, 1, 2], null, 'desc')); // [8, 5, 3, 2, 1]
279
+ */
280
+ function universalSort(array, key, order) {
281
+ if (order === void 0) {
282
+ order = 'asc';
283
+ }
284
+ // 检查排序顺序是否合法
285
+ if (order !== 'asc' && order !== 'desc') {
286
+ throw new Error("排序顺序必须是 'asc' 或 'desc'");
287
+ }
288
+ // 比较函数生成器
289
+ var compareFunction = function compareFunction(a, b) {
290
+ var valA, valB;
291
+ // 如果 key 是函数,调用它来获取比较值
292
+ if (typeof key === 'function') {
293
+ valA = key(a);
294
+ valB = key(b);
295
+ } else if (key) {
296
+ // 如果 key 是字符串,获取对象属性的值
297
+ valA = a[key];
298
+ valB = b[key];
299
+ } else {
300
+ // 如果没有 key,直接比较值
301
+ valA = a;
302
+ valB = b;
303
+ }
304
+ // 转换为小写字符串比较(针对字符串情况)
305
+ if (typeof valA === 'string' && typeof valB === 'string') {
306
+ valA = valA.toLowerCase();
307
+ valB = valB.toLowerCase();
308
+ }
309
+ // 比较逻辑
310
+ if (valA < valB) {
311
+ return order === 'asc' ? -1 : 1;
312
+ }
313
+ if (valA > valB) {
314
+ return order === 'asc' ? 1 : -1;
315
+ }
316
+ return 0;
317
+ };
318
+ // 使用比较函数对数组进行排序
319
+ return array.sort(compareFunction);
320
+ }
321
+ ArrayUtil.universalSort = universalSort;
256
322
  })(ArrayUtil || (ArrayUtil = {}));
257
323
  exports.default = ArrayUtil;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tools-min-ns",
3
3
  "description": "工具包适用于前端以及node",
4
- "version": "1.10.3",
4
+ "version": "1.11.0",
5
5
  "main": "lib/index.js",
6
6
  "license": "MIT",
7
7
  "author": "nanshen",