baja-lite 1.3.3 → 1.3.5
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/index.d.ts +0 -1
- package/index.js +0 -1
- package/package.json +1 -1
- package/validate.js +26 -24
- package/set-ex.d.ts +0 -198
- package/set-ex.js +0 -338
package/index.d.ts
CHANGED
package/index.js
CHANGED
package/package.json
CHANGED
package/validate.js
CHANGED
|
@@ -308,36 +308,38 @@ export class ValidateItem {
|
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
310
|
async mkIdCard() {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
else if (regex18.test(value)) {
|
|
321
|
-
// 18位身份证号码需要进一步校验校验位
|
|
322
|
-
const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
|
|
323
|
-
const parity = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
|
|
324
|
-
let sum = 0;
|
|
325
|
-
for (let i = 0; i < 17; i++) {
|
|
326
|
-
sum += parseInt(value[i]) * factor[i];
|
|
311
|
+
if (this.props.mkIdCard === true) {
|
|
312
|
+
// 15位身份证号码正则表达式
|
|
313
|
+
const regex15 = /^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}$/;
|
|
314
|
+
// 18位身份证号码正则表达式
|
|
315
|
+
const regex18 = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[0-9Xx]$/;
|
|
316
|
+
const value = this.value;
|
|
317
|
+
// 首先检查是否符合15位或18位的正则表达式
|
|
318
|
+
if (regex15.test(value)) {
|
|
319
|
+
return;
|
|
327
320
|
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
321
|
+
else if (regex18.test(value)) {
|
|
322
|
+
// 18位身份证号码需要进一步校验校验位
|
|
323
|
+
const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
|
|
324
|
+
const parity = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
|
|
325
|
+
let sum = 0;
|
|
326
|
+
for (let i = 0; i < 17; i++) {
|
|
327
|
+
sum += parseInt(value[i]) * factor[i];
|
|
328
|
+
}
|
|
329
|
+
const mod = sum % 11;
|
|
330
|
+
const checkDigit = value[17].toUpperCase();
|
|
331
|
+
if (checkDigit !== parity[mod]) {
|
|
332
|
+
throw new Error('身份证号码错误');
|
|
333
|
+
}
|
|
332
334
|
}
|
|
335
|
+
throw new Error('身份证号码错误');
|
|
333
336
|
}
|
|
334
|
-
throw new Error('身份证号码错误');
|
|
335
337
|
}
|
|
336
338
|
element() {
|
|
337
339
|
return [{
|
|
338
340
|
validator: (_rule, value, callback, _source, _op) => {
|
|
339
341
|
this.value = value;
|
|
340
|
-
runSequentially(Object.keys(this.props).filter(key => this[key] && typeof this[key] === 'function').map(key => this[key])).catch(error => callback(error)).then(() => callback());
|
|
342
|
+
runSequentially(Object.keys(this.props).filter(key => this.props[key] !== undefined && this[key] && typeof this[key] === 'function').map(key => () => this[key]())).catch(error => callback(error)).then(() => callback());
|
|
341
343
|
}, trigger: this.props.mkTrigger
|
|
342
344
|
}];
|
|
343
345
|
}
|
|
@@ -346,14 +348,14 @@ export class ValidateItem {
|
|
|
346
348
|
required: this.props.required,
|
|
347
349
|
validator: (val) => {
|
|
348
350
|
this.value = val;
|
|
349
|
-
return runSequentially(Object.keys(this.props).filter(key => this[key] && typeof this[key] === 'function').map(key => this[key]));
|
|
351
|
+
return runSequentially(Object.keys(this.props).filter(key => this.props[key] !== undefined && this[key] && typeof this[key] === 'function').map(key => () => this[key]()));
|
|
350
352
|
}
|
|
351
353
|
}];
|
|
352
354
|
}
|
|
353
355
|
async service() {
|
|
354
356
|
this.value = this.getProp(this.props.mkRealProp || this.props.prop);
|
|
355
357
|
for (const key in this.props) {
|
|
356
|
-
if (this[key] && typeof this[key] === 'function') {
|
|
358
|
+
if (this.props[key] !== undefined && this[key] && typeof this[key] === 'function') {
|
|
357
359
|
await this[key]();
|
|
358
360
|
}
|
|
359
361
|
}
|
package/set-ex.d.ts
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
export declare class SetEx<T> extends Set {
|
|
2
|
-
private _key;
|
|
3
|
-
private _onExist1?;
|
|
4
|
-
private _onNotExist1?;
|
|
5
|
-
private _replaceIfExits1;
|
|
6
|
-
private _onExist2?;
|
|
7
|
-
private _onNotExist2?;
|
|
8
|
-
private _replaceIfExits2;
|
|
9
|
-
private _map;
|
|
10
|
-
/**
|
|
11
|
-
* @param key 识别是否存在的对象的属性名
|
|
12
|
-
* @param onExist 当存在时作何操作? oldData/newData 哪个将添加到set,由replaceItemWhenExits决定,默认是oldData生效
|
|
13
|
-
* @param onNotExist 当不存在时作何操作?
|
|
14
|
-
* @param replaceWhenExits 当存在时是否覆盖?
|
|
15
|
-
* @param values 初始数组
|
|
16
|
-
*/
|
|
17
|
-
constructor(option: {
|
|
18
|
-
key: keyof T;
|
|
19
|
-
/** add&addAll触发 */
|
|
20
|
-
onExist1?: (oldData: T, newData: T) => void;
|
|
21
|
-
/** add&addAll触发 */
|
|
22
|
-
onNotExist1?: (newData: T) => void;
|
|
23
|
-
/** add&addAll触发 */
|
|
24
|
-
replaceIfExits1?: boolean;
|
|
25
|
-
/** add2&addAll2触发 */
|
|
26
|
-
onExist2?: (oldData: T, newData: T) => void;
|
|
27
|
-
/** add2&addAll2触发 */
|
|
28
|
-
onNotExist2?: (newData: T) => void;
|
|
29
|
-
/** add2&addAll2触发 */
|
|
30
|
-
replaceIfExits2?: boolean;
|
|
31
|
-
values?: ReadonlyArray<T> | null;
|
|
32
|
-
});
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
* 添加返回
|
|
36
|
-
* @param {T} value
|
|
37
|
-
* @returns {this} 当前对象
|
|
38
|
-
*/
|
|
39
|
-
add(value: T): this;
|
|
40
|
-
/**
|
|
41
|
-
* 批量添加
|
|
42
|
-
* @param values
|
|
43
|
-
* @returns 当前对象
|
|
44
|
-
*/
|
|
45
|
-
addAll(...values: T[]): this;
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* 添加
|
|
49
|
-
* @param {T} value
|
|
50
|
-
* @returns {T} 添加成功的对象:可能是新加入集合的,也可能是原本存在的
|
|
51
|
-
*/
|
|
52
|
-
add2(value: T): T;
|
|
53
|
-
/**
|
|
54
|
-
*
|
|
55
|
-
* 添加并返回添加成功的对象:可能是新加入集合的,也可能是原本存在的
|
|
56
|
-
* @param {T} values
|
|
57
|
-
* @returns {T}
|
|
58
|
-
*/
|
|
59
|
-
addAll2(values: T[]): T[];
|
|
60
|
-
/**
|
|
61
|
-
* 用key找到匹配的第一个对象
|
|
62
|
-
* @param {*} key 这是对象的关键属性,而非对象
|
|
63
|
-
* @returns {(T | null)}
|
|
64
|
-
*/
|
|
65
|
-
find(key: T[keyof T]): T | null;
|
|
66
|
-
/**
|
|
67
|
-
* 用key找到匹配的所有对象
|
|
68
|
-
* @param {*} key 这是对象的关键属性,而非对象
|
|
69
|
-
* @returns {T[]}
|
|
70
|
-
*/
|
|
71
|
-
findAll(key: T[keyof T]): T[];
|
|
72
|
-
/**
|
|
73
|
-
*
|
|
74
|
-
* 用函数回调找到匹配的第一个对象
|
|
75
|
-
* @param {(item: T) => boolean} fn
|
|
76
|
-
* @returns {T[]}
|
|
77
|
-
*/
|
|
78
|
-
filter(fn: (item: T) => boolean): T | null;
|
|
79
|
-
/**
|
|
80
|
-
*
|
|
81
|
-
* 用函数回调找到匹配的所有对象
|
|
82
|
-
* @param {(item: T) => boolean} fn
|
|
83
|
-
* @returns {T[]}
|
|
84
|
-
*/
|
|
85
|
-
filterAll(fn: (item: T) => boolean): T[];
|
|
86
|
-
/**
|
|
87
|
-
*
|
|
88
|
-
* 是否存在key对应的对象
|
|
89
|
-
* @param {*} value 这是对象的关键属性,而非对象
|
|
90
|
-
* @returns {boolean}
|
|
91
|
-
*/
|
|
92
|
-
has(key: T[keyof T]): boolean;
|
|
93
|
-
/**
|
|
94
|
-
* 转为数组
|
|
95
|
-
* @param param0
|
|
96
|
-
* @returns
|
|
97
|
-
*/
|
|
98
|
-
toArray({ sort, each, filter, map }?: {
|
|
99
|
-
sort?: (a: T, b: T) => number;
|
|
100
|
-
each?: (a: T) => void;
|
|
101
|
-
filter?: (a: T) => boolean;
|
|
102
|
-
map?: (a: T) => T;
|
|
103
|
-
}): T[];
|
|
104
|
-
/**
|
|
105
|
-
* 转为JSON对象
|
|
106
|
-
* @param key
|
|
107
|
-
* @param value
|
|
108
|
-
* @param param2
|
|
109
|
-
* @returns
|
|
110
|
-
*/
|
|
111
|
-
toJSON<L = T>(key: keyof T, value?: keyof T, { sort, each, filter, map }?: {
|
|
112
|
-
sort?: (a: T, b: T) => number;
|
|
113
|
-
each?: (a: T) => void;
|
|
114
|
-
filter?: (a: T) => boolean;
|
|
115
|
-
map?: (a: T) => T;
|
|
116
|
-
}): {
|
|
117
|
-
[k: string]: L;
|
|
118
|
-
};
|
|
119
|
-
/**
|
|
120
|
-
*
|
|
121
|
-
* 删除key对应的对象
|
|
122
|
-
* @param {*} _key 这是对象的关键属性,而非对象
|
|
123
|
-
* @returns {boolean}
|
|
124
|
-
*/
|
|
125
|
-
delete(_key: T[keyof T]): boolean;
|
|
126
|
-
/**
|
|
127
|
-
*
|
|
128
|
-
* 重置
|
|
129
|
-
* @param {keyof T} key
|
|
130
|
-
* @param {(oldData: T, newData: T) => void} [onExist]
|
|
131
|
-
* @param {boolean} [replaceWhenExits=false]
|
|
132
|
-
*/
|
|
133
|
-
reset(option: {
|
|
134
|
-
key?: keyof T;
|
|
135
|
-
/** add&addAll触发 */
|
|
136
|
-
onExist1?: (oldData: T, newData: T) => void;
|
|
137
|
-
/** add&addAll触发 */
|
|
138
|
-
onNotExist1?: (newData: T) => void;
|
|
139
|
-
/** add&addAll触发 */
|
|
140
|
-
replaceIfExits1?: boolean;
|
|
141
|
-
/** add2&addAll2触发 */
|
|
142
|
-
onExist2?: (oldData: T, newData: T) => void;
|
|
143
|
-
/** add2&addAll2触发 */
|
|
144
|
-
onNotExist2?: (newData: T) => void;
|
|
145
|
-
/** add2&addAll2触发 */
|
|
146
|
-
replaceIfExits2?: boolean;
|
|
147
|
-
values?: ReadonlyArray<T> | null;
|
|
148
|
-
}): this;
|
|
149
|
-
/**
|
|
150
|
-
*
|
|
151
|
-
* @param param0 转为JSON对象,value可能是数组
|
|
152
|
-
* @returns
|
|
153
|
-
*/
|
|
154
|
-
toJSONArray({ sort, each, filter, map }?: {
|
|
155
|
-
sort?: (a: T, b: T) => number;
|
|
156
|
-
each?: (a: T) => void;
|
|
157
|
-
filter?: (a: T) => boolean;
|
|
158
|
-
map?: (a: T) => T;
|
|
159
|
-
}): {
|
|
160
|
-
[k: string]: T[keyof T][];
|
|
161
|
-
};
|
|
162
|
-
/**
|
|
163
|
-
* 转为hot-table支持的数组
|
|
164
|
-
* @param param0
|
|
165
|
-
* @param keys
|
|
166
|
-
* @returns
|
|
167
|
-
*/
|
|
168
|
-
toDataGrid({ sort, each, filter, map }?: {
|
|
169
|
-
sort?: (a: T, b: T) => number;
|
|
170
|
-
each?: (a: T) => void;
|
|
171
|
-
filter?: (a: T) => boolean;
|
|
172
|
-
map?: (a: T) => T;
|
|
173
|
-
}, ...keys: (keyof T)[]): (keyof T | T[keyof T])[][];
|
|
174
|
-
/**
|
|
175
|
-
* 转为饼图支持的数组
|
|
176
|
-
* @param param0
|
|
177
|
-
* @param keys
|
|
178
|
-
* @returns
|
|
179
|
-
*/
|
|
180
|
-
toPieGrid({ sort, each, filter, map }?: {
|
|
181
|
-
sort?: (a: T, b: T) => number;
|
|
182
|
-
each?: (a: T) => void;
|
|
183
|
-
filter?: (a: T) => boolean;
|
|
184
|
-
map?: (a: T) => T;
|
|
185
|
-
}, ...keys: (keyof T)[]): {
|
|
186
|
-
[k: string]: {
|
|
187
|
-
value: T[keyof T];
|
|
188
|
-
name: T[keyof T];
|
|
189
|
-
}[];
|
|
190
|
-
};
|
|
191
|
-
set onExist1(onExist1: ((oldData: T, newData: T) => void) | undefined);
|
|
192
|
-
set onExist2(onExist2: ((oldData: T, newData: T) => void) | undefined);
|
|
193
|
-
set onNotExist1(onNotExist1: ((newData: T) => void) | undefined);
|
|
194
|
-
set onNotExist2(onNotExist2: ((newData: T) => void) | undefined);
|
|
195
|
-
set replaceIfExits1(replaceIfExits1: boolean);
|
|
196
|
-
set replaceIfExits2(replaceIfExits2: boolean);
|
|
197
|
-
set key(key: keyof T);
|
|
198
|
-
}
|
package/set-ex.js
DELETED
|
@@ -1,338 +0,0 @@
|
|
|
1
|
-
import iterate from "iterare";
|
|
2
|
-
export class SetEx extends Set {
|
|
3
|
-
/**
|
|
4
|
-
* @param key 识别是否存在的对象的属性名
|
|
5
|
-
* @param onExist 当存在时作何操作? oldData/newData 哪个将添加到set,由replaceItemWhenExits决定,默认是oldData生效
|
|
6
|
-
* @param onNotExist 当不存在时作何操作?
|
|
7
|
-
* @param replaceWhenExits 当存在时是否覆盖?
|
|
8
|
-
* @param values 初始数组
|
|
9
|
-
*/
|
|
10
|
-
constructor(option) {
|
|
11
|
-
super();
|
|
12
|
-
this._map = new Map();
|
|
13
|
-
this._key = option.key;
|
|
14
|
-
this._onExist1 = option.onExist1;
|
|
15
|
-
this._onNotExist1 = option.onNotExist1;
|
|
16
|
-
this._replaceIfExits1 = option.replaceIfExits1 === true;
|
|
17
|
-
this._onExist2 = option.onExist2;
|
|
18
|
-
this._onNotExist2 = option.onNotExist2;
|
|
19
|
-
this._replaceIfExits2 = option.replaceIfExits2 === true;
|
|
20
|
-
if (option.values) {
|
|
21
|
-
this.addAll(...option.values);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
* 添加返回
|
|
27
|
-
* @param {T} value
|
|
28
|
-
* @returns {this} 当前对象
|
|
29
|
-
*/
|
|
30
|
-
add(value) {
|
|
31
|
-
let flag = false;
|
|
32
|
-
const key = value[this._key];
|
|
33
|
-
const item = this._map.get(key);
|
|
34
|
-
if (item) {
|
|
35
|
-
flag = true;
|
|
36
|
-
if (this._onExist1) {
|
|
37
|
-
this._onExist1(item, value);
|
|
38
|
-
}
|
|
39
|
-
if (this._replaceIfExits1 === true) {
|
|
40
|
-
super.delete(item);
|
|
41
|
-
this._map.delete(key);
|
|
42
|
-
flag = false;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (flag === false) {
|
|
46
|
-
super.add(value);
|
|
47
|
-
this._map.set(key, value);
|
|
48
|
-
if (this._onNotExist1) {
|
|
49
|
-
this._onNotExist1(value);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 批量添加
|
|
56
|
-
* @param values
|
|
57
|
-
* @returns 当前对象
|
|
58
|
-
*/
|
|
59
|
-
addAll(...values) {
|
|
60
|
-
for (const value of values) {
|
|
61
|
-
this.add(value);
|
|
62
|
-
}
|
|
63
|
-
return this;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
*
|
|
67
|
-
* 添加
|
|
68
|
-
* @param {T} value
|
|
69
|
-
* @returns {T} 添加成功的对象:可能是新加入集合的,也可能是原本存在的
|
|
70
|
-
*/
|
|
71
|
-
add2(value) {
|
|
72
|
-
let flag = false;
|
|
73
|
-
const key = value[this._key];
|
|
74
|
-
const item = this._map.get(key);
|
|
75
|
-
let tmp = value;
|
|
76
|
-
if (item) {
|
|
77
|
-
flag = true;
|
|
78
|
-
if (this._onExist2) {
|
|
79
|
-
this._onExist2(item, value);
|
|
80
|
-
}
|
|
81
|
-
if (this._replaceIfExits2 === true) {
|
|
82
|
-
super.delete(value);
|
|
83
|
-
this._map.delete(key);
|
|
84
|
-
flag = false;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
tmp = item;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (flag === false) {
|
|
91
|
-
super.add(value);
|
|
92
|
-
this._map.set(key, value);
|
|
93
|
-
if (this._onNotExist2) {
|
|
94
|
-
this._onNotExist2(value);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return tmp;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
*
|
|
101
|
-
* 添加并返回添加成功的对象:可能是新加入集合的,也可能是原本存在的
|
|
102
|
-
* @param {T} values
|
|
103
|
-
* @returns {T}
|
|
104
|
-
*/
|
|
105
|
-
addAll2(values) {
|
|
106
|
-
const result = [];
|
|
107
|
-
for (const value of values) {
|
|
108
|
-
result.push(this.add2(value));
|
|
109
|
-
}
|
|
110
|
-
return result;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* 用key找到匹配的第一个对象
|
|
114
|
-
* @param {*} key 这是对象的关键属性,而非对象
|
|
115
|
-
* @returns {(T | null)}
|
|
116
|
-
*/
|
|
117
|
-
find(key) {
|
|
118
|
-
return this._map.get(key) ?? null;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* 用key找到匹配的所有对象
|
|
122
|
-
* @param {*} key 这是对象的关键属性,而非对象
|
|
123
|
-
* @returns {T[]}
|
|
124
|
-
*/
|
|
125
|
-
findAll(key) {
|
|
126
|
-
return iterate(key).map(k => this._map.get(k)).filter(v => v !== undefined).toArray();
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
*
|
|
130
|
-
* 用函数回调找到匹配的第一个对象
|
|
131
|
-
* @param {(item: T) => boolean} fn
|
|
132
|
-
* @returns {T[]}
|
|
133
|
-
*/
|
|
134
|
-
filter(fn) {
|
|
135
|
-
for (const item of this) {
|
|
136
|
-
if (fn(item) === true) {
|
|
137
|
-
return item;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return null;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
*
|
|
144
|
-
* 用函数回调找到匹配的所有对象
|
|
145
|
-
* @param {(item: T) => boolean} fn
|
|
146
|
-
* @returns {T[]}
|
|
147
|
-
*/
|
|
148
|
-
filterAll(fn) {
|
|
149
|
-
const res = new Array();
|
|
150
|
-
this.forEach((item) => {
|
|
151
|
-
if (fn(item) === true) {
|
|
152
|
-
res.push(item);
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
return res;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
*
|
|
159
|
-
* 是否存在key对应的对象
|
|
160
|
-
* @param {*} value 这是对象的关键属性,而非对象
|
|
161
|
-
* @returns {boolean}
|
|
162
|
-
*/
|
|
163
|
-
has(key) {
|
|
164
|
-
return this._map.has(key);
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* 转为数组
|
|
168
|
-
* @param param0
|
|
169
|
-
* @returns
|
|
170
|
-
*/
|
|
171
|
-
toArray({ sort, each, filter, map } = {}) {
|
|
172
|
-
let list = Array.from(this);
|
|
173
|
-
if (filter) {
|
|
174
|
-
list = list.filter(filter);
|
|
175
|
-
}
|
|
176
|
-
if (sort) {
|
|
177
|
-
list.sort(sort);
|
|
178
|
-
}
|
|
179
|
-
if (each) {
|
|
180
|
-
list.forEach(each);
|
|
181
|
-
}
|
|
182
|
-
if (map) {
|
|
183
|
-
list = list.map(map);
|
|
184
|
-
}
|
|
185
|
-
return list;
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* 转为JSON对象
|
|
189
|
-
* @param key
|
|
190
|
-
* @param value
|
|
191
|
-
* @param param2
|
|
192
|
-
* @returns
|
|
193
|
-
*/
|
|
194
|
-
toJSON(key, value, { sort, each, filter, map } = {}) {
|
|
195
|
-
return Object.fromEntries(this.toArray({ sort, each, filter, map }).map(i => [i[key], value ? i[value] : i]));
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
*
|
|
199
|
-
* 删除key对应的对象
|
|
200
|
-
* @param {*} _key 这是对象的关键属性,而非对象
|
|
201
|
-
* @returns {boolean}
|
|
202
|
-
*/
|
|
203
|
-
delete(_key) {
|
|
204
|
-
const key = _key;
|
|
205
|
-
const item = this._map.get(key);
|
|
206
|
-
if (item) {
|
|
207
|
-
super.delete(item);
|
|
208
|
-
this._map.delete(key);
|
|
209
|
-
return true;
|
|
210
|
-
}
|
|
211
|
-
return false;
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
*
|
|
215
|
-
* 重置
|
|
216
|
-
* @param {keyof T} key
|
|
217
|
-
* @param {(oldData: T, newData: T) => void} [onExist]
|
|
218
|
-
* @param {boolean} [replaceWhenExits=false]
|
|
219
|
-
*/
|
|
220
|
-
reset(option) {
|
|
221
|
-
this.clear();
|
|
222
|
-
this._map.clear();
|
|
223
|
-
if (option.key) {
|
|
224
|
-
this._key = option.key;
|
|
225
|
-
}
|
|
226
|
-
if (option.onExist1) {
|
|
227
|
-
this._onExist1 = option.onExist1;
|
|
228
|
-
}
|
|
229
|
-
if (option.onNotExist1) {
|
|
230
|
-
this._onNotExist1 = option.onNotExist1;
|
|
231
|
-
}
|
|
232
|
-
if (option.replaceIfExits1) {
|
|
233
|
-
this._replaceIfExits1 = option.replaceIfExits1;
|
|
234
|
-
}
|
|
235
|
-
if (option.onExist2) {
|
|
236
|
-
this._onExist2 = option.onExist2;
|
|
237
|
-
}
|
|
238
|
-
if (option.onNotExist2) {
|
|
239
|
-
this._onNotExist2 = option.onNotExist2;
|
|
240
|
-
}
|
|
241
|
-
if (option.replaceIfExits2) {
|
|
242
|
-
this._replaceIfExits2 = option.replaceIfExits2;
|
|
243
|
-
}
|
|
244
|
-
if (option.values) {
|
|
245
|
-
this.addAll(...option.values);
|
|
246
|
-
}
|
|
247
|
-
return this;
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
*
|
|
251
|
-
* @param param0 转为JSON对象,value可能是数组
|
|
252
|
-
* @returns
|
|
253
|
-
*/
|
|
254
|
-
toJSONArray({ sort, each, filter, map } = {}) {
|
|
255
|
-
const result = {};
|
|
256
|
-
const list = this.toArray({ sort, each, filter, map });
|
|
257
|
-
for (const item of list) {
|
|
258
|
-
for (const key in item) {
|
|
259
|
-
if (!result[key]) {
|
|
260
|
-
result[key] = [];
|
|
261
|
-
}
|
|
262
|
-
result[key].push(item[key]);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
return result;
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* 转为hot-table支持的数组
|
|
269
|
-
* @param param0
|
|
270
|
-
* @param keys
|
|
271
|
-
* @returns
|
|
272
|
-
*/
|
|
273
|
-
toDataGrid({ sort, each, filter, map } = {}, ...keys) {
|
|
274
|
-
if (this.size === 0) {
|
|
275
|
-
return [];
|
|
276
|
-
}
|
|
277
|
-
if (keys.length === 0) {
|
|
278
|
-
keys = Object.keys(this.values().next().value);
|
|
279
|
-
}
|
|
280
|
-
const result = [keys];
|
|
281
|
-
const list = this.toArray({ sort, each, filter, map });
|
|
282
|
-
for (const item of list) {
|
|
283
|
-
const one = [];
|
|
284
|
-
for (const key of keys) {
|
|
285
|
-
one.push(item[key]);
|
|
286
|
-
}
|
|
287
|
-
result.push(one);
|
|
288
|
-
}
|
|
289
|
-
return result;
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* 转为饼图支持的数组
|
|
293
|
-
* @param param0
|
|
294
|
-
* @param keys
|
|
295
|
-
* @returns
|
|
296
|
-
*/
|
|
297
|
-
toPieGrid({ sort, each, filter, map } = {}, ...keys) {
|
|
298
|
-
if (this.size === 0) {
|
|
299
|
-
return {};
|
|
300
|
-
}
|
|
301
|
-
if (keys.length === 0) {
|
|
302
|
-
keys = Object.keys(this.values().next().value);
|
|
303
|
-
}
|
|
304
|
-
const result = {};
|
|
305
|
-
const list = this.toArray({ sort, each, filter, map });
|
|
306
|
-
for (const item of list) {
|
|
307
|
-
const name = item[this._key];
|
|
308
|
-
for (const key in item) {
|
|
309
|
-
if (!result[key]) {
|
|
310
|
-
result[key] = [];
|
|
311
|
-
}
|
|
312
|
-
result[key].push({ name, value: item[key] });
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
return result;
|
|
316
|
-
}
|
|
317
|
-
set onExist1(onExist1) {
|
|
318
|
-
this._onExist1 = onExist1;
|
|
319
|
-
}
|
|
320
|
-
set onExist2(onExist2) {
|
|
321
|
-
this._onExist2 = onExist2;
|
|
322
|
-
}
|
|
323
|
-
set onNotExist1(onNotExist1) {
|
|
324
|
-
this._onNotExist1 = onNotExist1;
|
|
325
|
-
}
|
|
326
|
-
set onNotExist2(onNotExist2) {
|
|
327
|
-
this._onNotExist2 = onNotExist2;
|
|
328
|
-
}
|
|
329
|
-
set replaceIfExits1(replaceIfExits1) {
|
|
330
|
-
this._replaceIfExits1 = replaceIfExits1;
|
|
331
|
-
}
|
|
332
|
-
set replaceIfExits2(replaceIfExits2) {
|
|
333
|
-
this._replaceIfExits2 = replaceIfExits2;
|
|
334
|
-
}
|
|
335
|
-
set key(key) {
|
|
336
|
-
this._key = key;
|
|
337
|
-
}
|
|
338
|
-
}
|