qmwts 1.1.76 → 1.1.78
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.
|
@@ -29,7 +29,8 @@ declare const _default: {
|
|
|
29
29
|
* @param value 获取元素唯一标识的函数
|
|
30
30
|
* @param override 遇到重复元素是否覆盖
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
uniqueByKey<T, K = unknown>(array: T[] | undefined, value: (item: T) => K, override?: boolean): T[];
|
|
33
33
|
sort<T>(array: T[], order: "asc" | "desc", ...values: ((item: T) => number)[]): void;
|
|
34
|
+
mergeByKey<T extends object>(keyExtractor: (item: T) => string | number | symbol, ...arrays: T[][]): T[];
|
|
34
35
|
};
|
|
35
36
|
export default _default;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const lodash_es_1 = require("lodash-es");
|
|
3
4
|
exports.default = {
|
|
4
5
|
/**
|
|
5
6
|
* 数组转化为树形结构
|
|
@@ -89,11 +90,13 @@ exports.default = {
|
|
|
89
90
|
* @param value 获取元素唯一标识的函数
|
|
90
91
|
* @param override 遇到重复元素是否覆盖
|
|
91
92
|
*/
|
|
92
|
-
|
|
93
|
+
uniqueByKey(array = [], value, override = false) {
|
|
93
94
|
array = array ?? [];
|
|
94
95
|
const map = new Map();
|
|
95
96
|
for (let i = 0; i < array.length; i++) {
|
|
96
97
|
const e = array[i];
|
|
98
|
+
if (e == null)
|
|
99
|
+
continue;
|
|
97
100
|
const key = value(e);
|
|
98
101
|
if (!map.has(key) || override)
|
|
99
102
|
map.set(key, e);
|
|
@@ -113,5 +116,25 @@ exports.default = {
|
|
|
113
116
|
}
|
|
114
117
|
return 0;
|
|
115
118
|
});
|
|
119
|
+
},
|
|
120
|
+
mergeByKey(keyExtractor, ...arrays) {
|
|
121
|
+
// 1. 空值防御:过滤空数组,避免无效遍历
|
|
122
|
+
const validArrays = arrays.filter(arr => Array.isArray(arr) && arr.length > 0);
|
|
123
|
+
if (validArrays.length === 0)
|
|
124
|
+
return [];
|
|
125
|
+
const mergeMap = new Map();
|
|
126
|
+
for (let e of validArrays.flat()) {
|
|
127
|
+
if (!e)
|
|
128
|
+
continue;
|
|
129
|
+
const key = keyExtractor(e);
|
|
130
|
+
const v = mergeMap.get(key);
|
|
131
|
+
if (v) {
|
|
132
|
+
mergeMap.set(key, (0, lodash_es_1.merge)({}, e, v)); // v放在后面,即保留先插入的值
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
mergeMap.set(key, { ...e });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return Array.from(mergeMap.values());
|
|
116
139
|
}
|
|
117
140
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qmwts",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.78",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"author": "qmw",
|
|
12
12
|
"license": "ISC",
|
|
13
13
|
"devDependencies": {
|
|
14
|
+
"@types/lodash-es": "^4.17.12",
|
|
14
15
|
"axios": "*",
|
|
15
16
|
"typescript": "^5.9.2",
|
|
16
17
|
"vitest": "^3.2.4"
|
|
@@ -19,7 +20,8 @@
|
|
|
19
20
|
"dist"
|
|
20
21
|
],
|
|
21
22
|
"dependencies": {
|
|
22
|
-
"jszip": "^3.10.1"
|
|
23
|
+
"jszip": "^3.10.1",
|
|
24
|
+
"lodash-es": "^4.17.22"
|
|
23
25
|
},
|
|
24
26
|
"peerDependencies": {
|
|
25
27
|
"axios": "^1.12.2"
|