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 +4 -0
- package/esm/array/ArrayUtil.d.ts +30 -0
- package/esm/array/ArrayUtil.js +66 -0
- package/lib/array/ArrayUtil.d.ts +30 -0
- package/lib/array/ArrayUtil.js +66 -0
- package/package.json +1 -1
package/README.md
CHANGED
package/esm/array/ArrayUtil.d.ts
CHANGED
|
@@ -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;
|
package/esm/array/ArrayUtil.js
CHANGED
|
@@ -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;
|
package/lib/array/ArrayUtil.d.ts
CHANGED
|
@@ -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;
|
package/lib/array/ArrayUtil.js
CHANGED
|
@@ -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;
|