@gx-design-vue/pro-utils 0.2.0-beta.86 → 0.2.0-beta.88
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/LICENSE +21 -0
- package/README.md +73 -2
- package/dist/array/index.d.ts +5 -0
- package/dist/array/index.js +6 -0
- package/dist/array/slice.d.ts +4 -0
- package/dist/array/slice.js +28 -0
- package/dist/array/sort.d.ts +7 -0
- package/dist/array/sort.js +65 -0
- package/dist/array/tree.d.ts +25 -0
- package/dist/array/tree.js +157 -0
- package/dist/array/unique.d.ts +6 -0
- package/dist/array/unique.js +14 -0
- package/dist/base64/index.d.ts +10 -19
- package/dist/base64/index.js +106 -0
- package/dist/class/index.d.ts +2 -0
- package/dist/class/index.js +3 -0
- package/dist/class/prefix.d.ts +15 -0
- package/dist/class/prefix.js +15 -0
- package/dist/clone/cloneDeep.d.ts +4 -0
- package/dist/clone/cloneDeep.js +35 -0
- package/dist/clone/cloneDeepWith.d.ts +6 -0
- package/dist/clone/cloneDeepWith.js +150 -0
- package/dist/clone/getTag.d.ts +4 -0
- package/dist/clone/getTag.js +13 -0
- package/dist/clone/index.d.ts +3 -0
- package/dist/clone/index.js +4 -0
- package/dist/clone/symbols.d.ts +4 -0
- package/dist/clone/symbols.js +13 -0
- package/dist/clone/tags.d.ts +25 -0
- package/dist/clone/tags.js +48 -0
- package/dist/dom/event.d.ts +5 -0
- package/dist/dom/event.js +26 -0
- package/dist/dom/index.d.ts +5 -0
- package/dist/dom/index.js +6 -0
- package/dist/dom/measure.d.ts +12 -0
- package/dist/dom/measure.js +42 -0
- package/dist/dom/raf.d.ts +7 -0
- package/dist/dom/raf.js +44 -0
- package/dist/dom/scroll.d.ts +10 -0
- package/dist/dom/scroll.js +74 -0
- package/dist/file/config.d.ts +10 -0
- package/dist/file/config.js +81 -0
- package/dist/file/convert.d.ts +8 -0
- package/dist/file/convert.js +69 -0
- package/dist/file/index.d.ts +5 -0
- package/dist/file/index.js +6 -0
- package/dist/file/media.d.ts +16 -0
- package/dist/file/media.js +161 -0
- package/dist/file/type.d.ts +6 -0
- package/dist/file/type.js +58 -0
- package/dist/function/copy.d.ts +6 -0
- package/dist/function/copy.js +13 -0
- package/dist/function/getValue.d.ts +5 -0
- package/dist/function/getValue.js +19 -0
- package/dist/function/index.d.ts +5 -0
- package/dist/function/index.js +6 -0
- package/dist/function/object.d.ts +6 -0
- package/dist/function/object.js +33 -0
- package/dist/function/run.d.ts +4 -0
- package/dist/function/run.js +15 -0
- package/dist/index.d.ts +58 -26
- package/dist/index.js +60 -0
- package/dist/is/base64.d.ts +5 -0
- package/dist/is/base64.js +27 -0
- package/dist/is/browser.d.ts +4 -0
- package/dist/is/browser.js +14 -0
- package/dist/is/deepEqual.d.ts +4 -0
- package/dist/is/deepEqual.js +62 -0
- package/dist/is/device.d.ts +6 -0
- package/dist/is/device.js +37 -0
- package/dist/is/equal.d.ts +4 -0
- package/dist/is/equal.js +34 -0
- package/dist/is/img.d.ts +4 -0
- package/dist/is/img.js +13 -0
- package/dist/is/index.d.ts +16 -0
- package/dist/is/index.js +17 -0
- package/dist/is/nil.d.ts +5 -0
- package/dist/is/nil.js +22 -0
- package/dist/is/plainObject.d.ts +5 -0
- package/dist/is/plainObject.js +30 -0
- package/dist/is/primitive.d.ts +4 -0
- package/dist/is/primitive.js +13 -0
- package/dist/is/server.d.ts +4 -0
- package/dist/is/server.js +10 -0
- package/dist/is/type.d.ts +11 -0
- package/dist/is/type.js +84 -0
- package/dist/is/typedArray.d.ts +4 -0
- package/dist/is/typedArray.js +33 -0
- package/dist/is/unsafeProperty.d.ts +4 -0
- package/dist/is/unsafeProperty.js +18 -0
- package/dist/is/url.d.ts +4 -0
- package/dist/is/url.js +20 -0
- package/dist/is/valid.d.ts +5 -0
- package/dist/is/valid.js +23 -0
- package/dist/merge/index.d.ts +6 -49
- package/dist/merge/index.js +41 -0
- package/dist/merge/mergeWith.d.ts +4 -49
- package/dist/merge/mergeWith.js +31 -0
- package/dist/number/chinese.d.ts +4 -0
- package/dist/number/chinese.js +46 -0
- package/dist/number/format.d.ts +13 -0
- package/dist/number/format.js +72 -0
- package/dist/number/index.d.ts +3 -0
- package/dist/number/index.js +4 -0
- package/dist/object/classNames.d.ts +4 -0
- package/dist/object/classNames.js +30 -0
- package/dist/object/index.d.ts +5 -0
- package/dist/object/index.js +6 -0
- package/dist/object/omitBoolean.d.ts +4 -0
- package/dist/object/omitBoolean.js +13 -0
- package/dist/object/omitUndefined.d.ts +6 -0
- package/dist/object/omitUndefined.js +18 -0
- package/dist/object/omitUndefinedAndEmptyArr.d.ts +4 -0
- package/dist/object/omitUndefinedAndEmptyArr.js +19 -0
- package/dist/pro-utils.js +1 -1166
- package/dist/string/duration.d.ts +4 -0
- package/dist/string/duration.js +25 -0
- package/dist/string/empty.d.ts +7 -0
- package/dist/string/empty.js +26 -0
- package/dist/string/index.d.ts +5 -0
- package/dist/string/index.js +6 -0
- package/dist/string/nanoid.d.ts +4 -0
- package/dist/string/nanoid.js +32 -0
- package/dist/string/uuid.d.ts +9 -0
- package/dist/string/uuid.js +57 -0
- package/dist/table/column.d.ts +13 -0
- package/dist/table/column.js +42 -0
- package/dist/table/index.d.ts +3 -0
- package/dist/table/index.js +4 -0
- package/dist/table/page.d.ts +6 -0
- package/dist/table/page.js +23 -0
- package/dist/typing.d.ts +37 -0
- package/dist/typing.js +1 -0
- package/dist/vue/index.d.ts +2 -0
- package/dist/vue/index.js +3 -0
- package/dist/vue/slots.d.ts +56 -0
- package/dist/vue/slots.js +89 -0
- package/package.json +48 -23
- package/dist/classNames/index.d.ts +0 -2
- package/dist/cloneDeep/cloneDeepWith.d.ts +0 -43
- package/dist/cloneDeep/index.d.ts +0 -47
- package/dist/getValueFromObjectByKey/index.d.ts +0 -3
- package/dist/isBrowser/index.d.ts +0 -1
- package/dist/isDeepEqualReact/index.d.ts +0 -1
- package/dist/isImg/index.d.ts +0 -2
- package/dist/isNil/index.d.ts +0 -1
- package/dist/isServer.d.ts +0 -2
- package/dist/isUrl/index.d.ts +0 -6
- package/dist/merge/useDeepMege.d.ts +0 -43
- package/dist/nanoid/index.d.ts +0 -6
- package/dist/omitBoolean/index.d.ts +0 -6
- package/dist/omitUndefined/index.d.ts +0 -2
- package/dist/omitUndefinedAndEmptyArr/index.d.ts +0 -1
- package/dist/pro-utils.umd.cjs +0 -13
- package/dist/scroll/easings.d.ts +0 -1
- package/dist/scroll/getScroll.d.ts +0 -2
- package/dist/scroll/index.d.ts +0 -4
- package/dist/scroll/scrollTo.d.ts +0 -10
- package/dist/scroll/throttleByAnimationFrame.d.ts +0 -5
- package/dist/slots/index.d.ts +0 -68
- package/dist/typings/index.d.ts +0 -40
- package/dist/utils/config.d.ts +0 -7
- package/dist/utils/getSymbols.d.ts +0 -1
- package/dist/utils/getTag.d.ts +0 -8
- package/dist/utils/index.d.ts +0 -333
- package/dist/utils/isEqual.d.ts +0 -9
- package/dist/utils/isNotNil.d.ts +0 -1
- package/dist/utils/isPlainObject.d.ts +0 -43
- package/dist/utils/isPrimitive.d.ts +0 -29
- package/dist/utils/isTypedArray.d.ts +0 -27
- package/dist/utils/isUnsafeProperty.d.ts +0 -11
- package/dist/utils/isValid.d.ts +0 -2
- package/dist/utils/raf.d.ts +0 -5
- package/dist/utils/tags.d.ts +0 -26
- package/dist/utils/validate.d.ts +0 -28
|
@@ -1,49 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* If it returns `undefined`, a default deep merge will be applied for arrays and objects:
|
|
7
|
-
*
|
|
8
|
-
* - If a property in the source object is an array or an object and the corresponding property in the target object is also an array or object, they will be merged.
|
|
9
|
-
* - If a property in the source object is undefined, it will not overwrite a defined property in the target object.
|
|
10
|
-
*
|
|
11
|
-
* Note that this function mutates the target object.
|
|
12
|
-
*
|
|
13
|
-
* @param {T} target - The target object into which the source object properties will be merged. This object is modified in place.
|
|
14
|
-
* @param {S} source - The source object whose properties will be merged into the target object.
|
|
15
|
-
* @param {(targetValue: any, sourceValue: any, key: string, target: T, source: S) => any} merge - A custom merge function that defines how properties should be combined. It receives the following arguments:
|
|
16
|
-
* - `targetValue`: The current value of the property in the target object.
|
|
17
|
-
* - `sourceValue`: The value of the property in the source object.
|
|
18
|
-
* - `key`: The key of the property being merged.
|
|
19
|
-
* - `target`: The target object.
|
|
20
|
-
* - `source`: The source object.
|
|
21
|
-
*
|
|
22
|
-
* @returns {T & S} The updated target object with properties from the source object merged in.
|
|
23
|
-
*
|
|
24
|
-
* @template T - Type of the target object.
|
|
25
|
-
* @template S - Type of the source object.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* const target = { a: 1, b: 2 };
|
|
29
|
-
* const source = { b: 3, c: 4 };
|
|
30
|
-
*
|
|
31
|
-
* mergeWith(target, source, (targetValue, sourceValue) => {
|
|
32
|
-
* if (typeof targetValue === 'number' && typeof sourceValue === 'number') {
|
|
33
|
-
* return targetValue + sourceValue;
|
|
34
|
-
* }
|
|
35
|
-
* });
|
|
36
|
-
* // Returns { a: 1, b: 5, c: 4 }
|
|
37
|
-
* @example
|
|
38
|
-
* const target = { a: [1], b: [2] };
|
|
39
|
-
* const source = { a: [3], b: [4] };
|
|
40
|
-
*
|
|
41
|
-
* const result = mergeWith(target, source, (objValue, srcValue) => {
|
|
42
|
-
* if (Array.isArray(objValue)) {
|
|
43
|
-
* return objValue.concat(srcValue);
|
|
44
|
-
* }
|
|
45
|
-
* });
|
|
46
|
-
*
|
|
47
|
-
* expect(result).toEqual({ a: [1, 3], b: [2, 4] });
|
|
48
|
-
*/
|
|
49
|
-
export declare function mergeWith<T extends Record<PropertyKey, any>, S extends Record<PropertyKey, any>>(target: T, source: S, merge: (targetValue: any, sourceValue: any, key: string, target: T, source: S) => any): T & S;
|
|
1
|
+
//#region src/merge/mergeWith.d.ts
|
|
2
|
+
declare function mergeWith<T extends Record<PropertyKey, any>, S extends Record<PropertyKey, any>>(target: T, source: S, merge: (targetValue: any, sourceValue: any, key: string, target: T, source: S) => any): T & S;
|
|
3
|
+
//#endregion
|
|
4
|
+
export { mergeWith };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { isPlainObject } from "../is/plainObject.js";
|
|
2
|
+
import { isUnsafeProperty } from "../is/unsafeProperty.js";
|
|
3
|
+
import "../is/index.js";
|
|
4
|
+
|
|
5
|
+
//#region src/merge/mergeWith.ts
|
|
6
|
+
/**
|
|
7
|
+
* 合并对象(带自定义处理)
|
|
8
|
+
*
|
|
9
|
+
* @param target - 目标对象
|
|
10
|
+
* @param source - 源对象
|
|
11
|
+
* @param merge - 自定义合并函数
|
|
12
|
+
* @returns 合并后的对象
|
|
13
|
+
*/
|
|
14
|
+
function mergeWith(target, source, merge) {
|
|
15
|
+
const sourceKeys = Object.keys(source);
|
|
16
|
+
for (let i = 0; i < sourceKeys.length; i++) {
|
|
17
|
+
const key = sourceKeys[i];
|
|
18
|
+
if (isUnsafeProperty(key)) continue;
|
|
19
|
+
const sourceValue = source[key];
|
|
20
|
+
const targetValue = target[key];
|
|
21
|
+
const merged = merge(targetValue, sourceValue, key, target, source);
|
|
22
|
+
if (merged !== void 0) target[key] = merged;
|
|
23
|
+
else if (isPlainObject(sourceValue)) if (isPlainObject(targetValue)) target[key] = mergeWith(targetValue, sourceValue, merge);
|
|
24
|
+
else target[key] = mergeWith({}, sourceValue, merge);
|
|
25
|
+
else target[key] = sourceValue;
|
|
26
|
+
}
|
|
27
|
+
return target;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
export { mergeWith };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { isNumber } from "../is/type.js";
|
|
2
|
+
import "../is/index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/number/chinese.ts
|
|
5
|
+
/**
|
|
6
|
+
* 数字转中文
|
|
7
|
+
*
|
|
8
|
+
* @param num - 要转换的数字
|
|
9
|
+
* @returns 中文数字
|
|
10
|
+
*/
|
|
11
|
+
function toChinesNum(num) {
|
|
12
|
+
num = isNumber(num) && !Number.isNaN(num) ? num : 0;
|
|
13
|
+
const changeNum = [
|
|
14
|
+
"零",
|
|
15
|
+
"一",
|
|
16
|
+
"二",
|
|
17
|
+
"三",
|
|
18
|
+
"四",
|
|
19
|
+
"五",
|
|
20
|
+
"六",
|
|
21
|
+
"七",
|
|
22
|
+
"八",
|
|
23
|
+
"九"
|
|
24
|
+
];
|
|
25
|
+
const unit = [
|
|
26
|
+
"",
|
|
27
|
+
"十",
|
|
28
|
+
"百",
|
|
29
|
+
"千",
|
|
30
|
+
"万"
|
|
31
|
+
];
|
|
32
|
+
num = Number.parseInt(`${num}`);
|
|
33
|
+
const getWan = (temp) => {
|
|
34
|
+
const strArr = temp.toString().split("").reverse();
|
|
35
|
+
let newNum = "";
|
|
36
|
+
for (let i = 0; i < strArr.length; i++) newNum = (i === 0 && strArr[i] === "0" ? "" : i > 0 && strArr[i] === "0" && strArr[i - 1] === "0" ? "" : (num < 20 && i > 0 ? "" : changeNum[strArr[i]]) + (strArr[i] === "0" ? unit[0] : unit[i])) + newNum;
|
|
37
|
+
return newNum;
|
|
38
|
+
};
|
|
39
|
+
const overWan = Math.floor(num / 1e4);
|
|
40
|
+
let noWan = num % 1e4;
|
|
41
|
+
if (noWan.toString().length < 4) noWan = `0${noWan}`;
|
|
42
|
+
return overWan ? `${getWan(overWan)}万${getWan(noWan)}` : getWan(num);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
export { toChinesNum };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/number/format.d.ts
|
|
2
|
+
declare function formatNumber(fixedNum: number, value: number): string;
|
|
3
|
+
declare function toConvertNumberShow(number: number, options?: {
|
|
4
|
+
toChinese?: boolean;
|
|
5
|
+
fixed?: number;
|
|
6
|
+
min?: number;
|
|
7
|
+
}): {
|
|
8
|
+
str: string;
|
|
9
|
+
number: string;
|
|
10
|
+
unit?: string;
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { formatNumber, toConvertNumberShow };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { isNumber } from "../is/type.js";
|
|
2
|
+
import "../is/index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/number/format.ts
|
|
5
|
+
/**
|
|
6
|
+
* 格式化数字,保留指定小数位
|
|
7
|
+
*
|
|
8
|
+
* @param fixedNum - 小数位数
|
|
9
|
+
* @param value - 要格式化的值
|
|
10
|
+
* @returns 格式化后的字符串
|
|
11
|
+
*/
|
|
12
|
+
function formatNumber(fixedNum, value) {
|
|
13
|
+
const regexPattern = `^\\d+(?:\\.\\d{0,${fixedNum}})?`;
|
|
14
|
+
const match = new RegExp(regexPattern);
|
|
15
|
+
const result = value.toString().match(match);
|
|
16
|
+
if (result) {
|
|
17
|
+
const formattedValue = result[0];
|
|
18
|
+
if (formattedValue.includes(".")) {
|
|
19
|
+
const [integerPart, decimalPart] = formattedValue.split(".");
|
|
20
|
+
if (/^0*$/.test(decimalPart)) return integerPart;
|
|
21
|
+
}
|
|
22
|
+
return formattedValue;
|
|
23
|
+
}
|
|
24
|
+
return value.toString();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 转换数字为带单位的显示格式
|
|
28
|
+
*
|
|
29
|
+
* @param number - 要转换的数字
|
|
30
|
+
* @param options - 配置选项
|
|
31
|
+
* @returns 转换结果
|
|
32
|
+
*/
|
|
33
|
+
function toConvertNumberShow(number, options) {
|
|
34
|
+
const { toChinese = false, fixed = 2, min = 1e4 } = options || {};
|
|
35
|
+
const minCount = isNumber(min) ? min : 1e4;
|
|
36
|
+
const fixedNum = isNumber(fixed) ? fixed : 2;
|
|
37
|
+
const countStr = toChinese ? number < minCount ? "" : number < 1e8 ? "万" : "亿" : number < minCount ? "" : number < 1e8 ? "w" : "亿";
|
|
38
|
+
if (!isNumber(number)) return {
|
|
39
|
+
str: `${number}`,
|
|
40
|
+
number: `${number}`
|
|
41
|
+
};
|
|
42
|
+
if (number < minCount) return {
|
|
43
|
+
str: `${number}`,
|
|
44
|
+
number: `${number}`
|
|
45
|
+
};
|
|
46
|
+
if (fixedNum === 0) {
|
|
47
|
+
const numStr = (number / (number < 1e8 ? 1e4 : 1e8)).toFixed(1).split(".")[0];
|
|
48
|
+
return {
|
|
49
|
+
str: `${numStr}${countStr}`,
|
|
50
|
+
number: numStr,
|
|
51
|
+
unit: countStr
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
let value;
|
|
55
|
+
if (number < 1e8) {
|
|
56
|
+
value = formatNumber(fixedNum, number / 1e4);
|
|
57
|
+
return {
|
|
58
|
+
str: value + countStr,
|
|
59
|
+
number: value,
|
|
60
|
+
unit: countStr
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
value = formatNumber(fixedNum, number / 1e8);
|
|
64
|
+
return {
|
|
65
|
+
str: value + countStr,
|
|
66
|
+
number: value,
|
|
67
|
+
unit: countStr
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//#endregion
|
|
72
|
+
export { formatNumber, toConvertNumberShow };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { isArray, isObject, isString } from "../is/type.js";
|
|
2
|
+
import "../is/index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/object/classNames.ts
|
|
5
|
+
/**
|
|
6
|
+
* 类名合并工具
|
|
7
|
+
*
|
|
8
|
+
* @param args - 类名参数
|
|
9
|
+
* @returns 合并后的类名字符串
|
|
10
|
+
*/
|
|
11
|
+
function classNames(...args) {
|
|
12
|
+
const classes = [];
|
|
13
|
+
for (let i = 0; i < args.length; i++) {
|
|
14
|
+
const value = args[i];
|
|
15
|
+
if (!value) continue;
|
|
16
|
+
if (isString(value)) classes.push(value);
|
|
17
|
+
else if (isArray(value)) for (let i = 0; i < value.length; i++) {
|
|
18
|
+
const inner = classNames(value[i]);
|
|
19
|
+
if (inner) classes.push(inner);
|
|
20
|
+
}
|
|
21
|
+
else if (isObject(value)) {
|
|
22
|
+
for (const name in value) if (value[name]) classes.push(name);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return classes.filter((el) => el).join(" ");
|
|
26
|
+
}
|
|
27
|
+
var classNames_default = classNames;
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
export { classNames_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import classNames from "./classNames.js";
|
|
2
|
+
import { omitBoolean } from "./omitBoolean.js";
|
|
3
|
+
import { omitUndefined } from "./omitUndefined.js";
|
|
4
|
+
import { omitUndefinedAndEmptyArr } from "./omitUndefinedAndEmptyArr.js";
|
|
5
|
+
export { classNames, omitBoolean, omitUndefined, omitUndefinedAndEmptyArr };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import classNames_default from "./classNames.js";
|
|
2
|
+
import { omitBoolean } from "./omitBoolean.js";
|
|
3
|
+
import { omitUndefined } from "./omitUndefined.js";
|
|
4
|
+
import { omitUndefinedAndEmptyArr } from "./omitUndefinedAndEmptyArr.js";
|
|
5
|
+
|
|
6
|
+
export { classNames_default as classNames, omitBoolean, omitUndefined, omitUndefinedAndEmptyArr };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/object/omitUndefined.ts
|
|
2
|
+
/**
|
|
3
|
+
* 剔除 undefined 值
|
|
4
|
+
*
|
|
5
|
+
* @param obj - 要处理的对象
|
|
6
|
+
* @returns 处理后的对象
|
|
7
|
+
*/
|
|
8
|
+
function omitUndefined(obj) {
|
|
9
|
+
const newObj = {};
|
|
10
|
+
Object.keys(obj || {}).forEach((key) => {
|
|
11
|
+
if (obj[key] !== void 0) newObj[key] = obj[key];
|
|
12
|
+
});
|
|
13
|
+
if (Object.keys(newObj).length < 1) return;
|
|
14
|
+
return newObj;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { omitUndefined };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/object/omitUndefinedAndEmptyArr.ts
|
|
2
|
+
/**
|
|
3
|
+
* 剔除 undefined 和空数组
|
|
4
|
+
*
|
|
5
|
+
* @param obj - 要处理的对象
|
|
6
|
+
* @returns 处理后的对象
|
|
7
|
+
*/
|
|
8
|
+
function omitUndefinedAndEmptyArr(obj) {
|
|
9
|
+
const newObj = {};
|
|
10
|
+
Object.keys(obj || {}).forEach((key) => {
|
|
11
|
+
if (Array.isArray(obj[key]) && obj[key]?.length === 0) return;
|
|
12
|
+
if (obj[key] === void 0) return;
|
|
13
|
+
newObj[key] = obj[key];
|
|
14
|
+
});
|
|
15
|
+
return newObj;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { omitUndefinedAndEmptyArr };
|