tools-min-ns 1.10.3 → 1.11.1
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 +8 -0
- package/esm/array/ArrayUtil.d.ts +30 -0
- package/esm/array/ArrayUtil.js +66 -0
- package/esm/browser/BrowserUtil.d.ts +4 -4
- package/esm/browser/BrowserUtil.js +8 -4
- package/lib/array/ArrayUtil.d.ts +30 -0
- package/lib/array/ArrayUtil.js +66 -0
- package/lib/browser/BrowserUtil.d.ts +4 -4
- package/lib/browser/BrowserUtil.js +8 -4
- 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;
|
|
@@ -26,7 +26,7 @@ declare namespace BrowserUtil {
|
|
|
26
26
|
* 判断是否微信内置浏览器
|
|
27
27
|
* @returns boolean
|
|
28
28
|
*/
|
|
29
|
-
const isWeixinBrowser: () =>
|
|
29
|
+
const isWeixinBrowser: () => boolean;
|
|
30
30
|
/**
|
|
31
31
|
* 判断是否微信小程序WebView
|
|
32
32
|
* @returns boolean
|
|
@@ -36,17 +36,17 @@ declare namespace BrowserUtil {
|
|
|
36
36
|
* 判断是否是支付宝浏览器
|
|
37
37
|
* @returns boolean
|
|
38
38
|
*/
|
|
39
|
-
const isAlipayBrowser: () =>
|
|
39
|
+
const isAlipayBrowser: () => boolean;
|
|
40
40
|
/**
|
|
41
41
|
* 判断是否是支付宝小程序webview
|
|
42
42
|
* @returns boolean
|
|
43
43
|
*/
|
|
44
|
-
const isAlipayMiniWebView: () =>
|
|
44
|
+
const isAlipayMiniWebView: () => boolean;
|
|
45
45
|
/**
|
|
46
46
|
* 判断是否是浙里办
|
|
47
47
|
* @returns boolean
|
|
48
48
|
*/
|
|
49
|
-
const isMgopBrowser: () =>
|
|
49
|
+
const isMgopBrowser: () => boolean;
|
|
50
50
|
/** 全屏 */
|
|
51
51
|
function fullScreen(root: string | HTMLElement, callback?: (isFull: boolean) => void): void;
|
|
52
52
|
/** 是否全屏 */
|
|
@@ -116,10 +116,10 @@ var __generator = this && this.__generator || function (thisArg, body) {
|
|
|
116
116
|
import BaseUtil from '../base/BaseUtil';
|
|
117
117
|
import env from '../env/env';
|
|
118
118
|
import fingerprint from './fingerprint';
|
|
119
|
-
|
|
120
|
-
var
|
|
121
|
-
return
|
|
122
|
-
}
|
|
119
|
+
function isInUserAgent(v) {
|
|
120
|
+
var _a, _b;
|
|
121
|
+
return !!((_b = (_a = env.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(v));
|
|
122
|
+
}
|
|
123
123
|
var BrowserUtil;
|
|
124
124
|
(function (BrowserUtil) {
|
|
125
125
|
var _this = this;
|
|
@@ -168,6 +168,8 @@ var BrowserUtil;
|
|
|
168
168
|
* @returns Opera | IE | Edge | Firefox | Safari | Chrome | OverIE10 | ""
|
|
169
169
|
*/
|
|
170
170
|
BrowserUtil.browserGetType = function () {
|
|
171
|
+
var _a;
|
|
172
|
+
var userAgent = ((_a = env.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) || '';
|
|
171
173
|
if (userAgent.indexOf('Opera') > -1 || userAgent.indexOf('OPR') > -1) {
|
|
172
174
|
return 'Opera';
|
|
173
175
|
} else if (userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1) {
|
|
@@ -190,6 +192,8 @@ var BrowserUtil;
|
|
|
190
192
|
* @returns boolean
|
|
191
193
|
*/
|
|
192
194
|
BrowserUtil.isMobileBrowser = function () {
|
|
195
|
+
var _a;
|
|
196
|
+
var userAgent = ((_a = env.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) || '';
|
|
193
197
|
return !!userAgent.toLowerCase().match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|SymbianOS|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
|
|
194
198
|
};
|
|
195
199
|
/**
|
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;
|
|
@@ -26,7 +26,7 @@ declare namespace BrowserUtil {
|
|
|
26
26
|
* 判断是否微信内置浏览器
|
|
27
27
|
* @returns boolean
|
|
28
28
|
*/
|
|
29
|
-
const isWeixinBrowser: () =>
|
|
29
|
+
const isWeixinBrowser: () => boolean;
|
|
30
30
|
/**
|
|
31
31
|
* 判断是否微信小程序WebView
|
|
32
32
|
* @returns boolean
|
|
@@ -36,17 +36,17 @@ declare namespace BrowserUtil {
|
|
|
36
36
|
* 判断是否是支付宝浏览器
|
|
37
37
|
* @returns boolean
|
|
38
38
|
*/
|
|
39
|
-
const isAlipayBrowser: () =>
|
|
39
|
+
const isAlipayBrowser: () => boolean;
|
|
40
40
|
/**
|
|
41
41
|
* 判断是否是支付宝小程序webview
|
|
42
42
|
* @returns boolean
|
|
43
43
|
*/
|
|
44
|
-
const isAlipayMiniWebView: () =>
|
|
44
|
+
const isAlipayMiniWebView: () => boolean;
|
|
45
45
|
/**
|
|
46
46
|
* 判断是否是浙里办
|
|
47
47
|
* @returns boolean
|
|
48
48
|
*/
|
|
49
|
-
const isMgopBrowser: () =>
|
|
49
|
+
const isMgopBrowser: () => boolean;
|
|
50
50
|
/** 全屏 */
|
|
51
51
|
function fullScreen(root: string | HTMLElement, callback?: (isFull: boolean) => void): void;
|
|
52
52
|
/** 是否全屏 */
|
|
@@ -126,10 +126,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
126
126
|
var BaseUtil_1 = __importDefault(require("../base/BaseUtil"));
|
|
127
127
|
var env_1 = __importDefault(require("../env/env"));
|
|
128
128
|
var fingerprint_1 = __importDefault(require("./fingerprint"));
|
|
129
|
-
|
|
130
|
-
var
|
|
131
|
-
return
|
|
132
|
-
}
|
|
129
|
+
function isInUserAgent(v) {
|
|
130
|
+
var _a, _b;
|
|
131
|
+
return !!((_b = (_a = env_1.default.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(v));
|
|
132
|
+
}
|
|
133
133
|
var BrowserUtil;
|
|
134
134
|
(function (BrowserUtil) {
|
|
135
135
|
var _this = this;
|
|
@@ -178,6 +178,8 @@ var BrowserUtil;
|
|
|
178
178
|
* @returns Opera | IE | Edge | Firefox | Safari | Chrome | OverIE10 | ""
|
|
179
179
|
*/
|
|
180
180
|
BrowserUtil.browserGetType = function () {
|
|
181
|
+
var _a;
|
|
182
|
+
var userAgent = ((_a = env_1.default.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) || '';
|
|
181
183
|
if (userAgent.indexOf('Opera') > -1 || userAgent.indexOf('OPR') > -1) {
|
|
182
184
|
return 'Opera';
|
|
183
185
|
} else if (userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1) {
|
|
@@ -200,6 +202,8 @@ var BrowserUtil;
|
|
|
200
202
|
* @returns boolean
|
|
201
203
|
*/
|
|
202
204
|
BrowserUtil.isMobileBrowser = function () {
|
|
205
|
+
var _a;
|
|
206
|
+
var userAgent = ((_a = env_1.default.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) || '';
|
|
203
207
|
return !!userAgent.toLowerCase().match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|SymbianOS|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
|
|
204
208
|
};
|
|
205
209
|
/**
|