qmwts 1.1.77 → 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,7 +90,7 @@ 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++) {
|
|
@@ -115,5 +116,25 @@ exports.default = {
|
|
|
115
116
|
}
|
|
116
117
|
return 0;
|
|
117
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());
|
|
118
139
|
}
|
|
119
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"
|