@fnmain/number 1.9.0 → 1.11.0
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/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -15
- package/dist/index.js.map +1 -1
- package/dist/test.js +9 -1
- package/dist/test.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +75 -13
- package/src/test.ts +13 -1
package/dist/index.d.ts
CHANGED
@@ -5,20 +5,24 @@ type Options = {
|
|
5
5
|
wanYiFixed?: number;
|
6
6
|
trimEndZeros?: boolean;
|
7
7
|
nanString?: string;
|
8
|
+
withCommas?: boolean;
|
8
9
|
space?: string;
|
9
10
|
};
|
10
11
|
export declare function trimTrailingZeros(numberString: string): string;
|
11
|
-
export declare function
|
12
|
-
export declare function
|
13
|
-
export declare function
|
14
|
-
export declare function
|
15
|
-
export declare function
|
12
|
+
export declare function toDigit(value: any, { fixed, withCommas, trimEndZeros, nanString }: Options): any;
|
13
|
+
export declare function toWan(value: any, { fixed, withCommas, trimEndZeros, space, nanString, }?: Options): string;
|
14
|
+
export declare function toYi(value: any, { fixed, withCommas, trimEndZeros, space, nanString, }?: Options): string;
|
15
|
+
export declare function toWanYi(value: any, { fixed, withCommas, trimEndZeros, space, nanString, }?: Options): string;
|
16
|
+
export declare function toAuto(value: any, { fixed, wanFixed, yiFixed, wanYiFixed, withCommas, trimEndZeros, space, nanString, }?: Options): string;
|
17
|
+
export declare function toPercent(value: any, { fixed, withCommas, trimEndZeros, space, nanString, }?: Options): string;
|
16
18
|
export declare function parseNumber(input: any): number;
|
17
19
|
export declare function isNumber(value: any): boolean;
|
18
20
|
export declare function isNotNumber(value: any): boolean;
|
21
|
+
export declare function addCommas(value: string): string;
|
19
22
|
export declare function formatWithCommas(value: any, { strNaN }?: {
|
20
23
|
strNaN: string;
|
21
24
|
}): string;
|
22
25
|
export declare function removeNumberCommas(str: string): string;
|
26
|
+
export declare function numberFallback(...args: any[]): number;
|
23
27
|
export {};
|
24
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAYF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,GAAG,EACV,EAAE,KAAS,EAAE,UAAkB,EAAE,YAAoB,EAAE,SAAiB,EAAE,EAAE,OAAO,OASpF;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAQR;AAED,wBAAgB,IAAI,CAClB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAQR;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAQR;AAED,wBAAgB,MAAM,CACpB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAqBR;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,GAAG,EACV,EACE,KAAS,EACT,UAAkB,EAClB,YAAoB,EACpB,KAAU,EACV,SAAiB,GAClB,GAAE,OAAY,GACd,MAAM,CAQR;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAwD9C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE5C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE/C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE;;CAAoB,GAAG,MAAM,CAMnF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,cAAc,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAOrD"}
|
package/dist/index.js
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.removeNumberCommas = exports.formatWithCommas = exports.isNotNumber = exports.isNumber = exports.parseNumber = exports.toPercent = exports.toAuto = exports.toWanYi = exports.toYi = exports.toWan = exports.trimTrailingZeros = void 0;
|
3
|
+
exports.numberFallback = exports.removeNumberCommas = exports.formatWithCommas = exports.addCommas = exports.isNotNumber = exports.isNumber = exports.parseNumber = exports.toPercent = exports.toAuto = exports.toWanYi = exports.toYi = exports.toWan = exports.toDigit = exports.trimTrailingZeros = void 0;
|
4
|
+
function format(value, { withCommas = false, trimEndZeros = false }) {
|
5
|
+
let ret = value;
|
6
|
+
ret = trimEndZeros ? trimTrailingZeros(ret) : ret;
|
7
|
+
ret = withCommas ? addCommas(ret) : ret;
|
8
|
+
return ret;
|
9
|
+
}
|
4
10
|
function trimTrailingZeros(numberString) {
|
5
11
|
// Check if the string contains a decimal point
|
6
12
|
if (numberString.includes(".")) {
|
@@ -11,37 +17,47 @@ function trimTrailingZeros(numberString) {
|
|
11
17
|
return numberString;
|
12
18
|
}
|
13
19
|
exports.trimTrailingZeros = trimTrailingZeros;
|
14
|
-
function
|
20
|
+
function toDigit(value, { fixed = 2, withCommas = false, trimEndZeros = false, nanString = "NaN" }) {
|
21
|
+
value = parseNumber(value);
|
22
|
+
if (isNaN(value)) {
|
23
|
+
return nanString;
|
24
|
+
}
|
25
|
+
let ret = value.toFixed(fixed);
|
26
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
27
|
+
return ret;
|
28
|
+
}
|
29
|
+
exports.toDigit = toDigit;
|
30
|
+
function toWan(value, { fixed = 0, withCommas = false, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
15
31
|
value = parseNumber(value);
|
16
32
|
if (isNaN(value)) {
|
17
33
|
return nanString;
|
18
34
|
}
|
19
35
|
let ret = (value / 10000).toFixed(fixed);
|
20
|
-
ret =
|
36
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
21
37
|
return ret + space + "万";
|
22
38
|
}
|
23
39
|
exports.toWan = toWan;
|
24
|
-
function toYi(value, { fixed = 0, trimEndZeros = false, space = "", nanString = "NaN" } = {}) {
|
40
|
+
function toYi(value, { fixed = 0, withCommas = false, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
25
41
|
value = parseNumber(value);
|
26
42
|
if (isNaN(value)) {
|
27
43
|
return nanString;
|
28
44
|
}
|
29
45
|
let ret = (value / 100000000).toFixed(fixed);
|
30
|
-
ret =
|
46
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
31
47
|
return ret + space + "亿";
|
32
48
|
}
|
33
49
|
exports.toYi = toYi;
|
34
|
-
function toWanYi(value, { fixed = 0, trimEndZeros = false, space = "", nanString = "NaN" } = {}) {
|
50
|
+
function toWanYi(value, { fixed = 0, withCommas = false, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
35
51
|
value = parseNumber(value);
|
36
52
|
if (isNaN(value)) {
|
37
53
|
return nanString;
|
38
54
|
}
|
39
55
|
let ret = (value / 1000000000000).toFixed(fixed);
|
40
|
-
ret =
|
56
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
41
57
|
return ret + space + "万亿";
|
42
58
|
}
|
43
59
|
exports.toWanYi = toWanYi;
|
44
|
-
function toAuto(value, { fixed = 0, wanFixed, yiFixed, wanYiFixed, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
60
|
+
function toAuto(value, { fixed = 0, wanFixed, yiFixed, wanYiFixed, withCommas = false, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
45
61
|
value = parseNumber(value);
|
46
62
|
if (isNaN(value)) {
|
47
63
|
return nanString;
|
@@ -49,28 +65,28 @@ function toAuto(value, { fixed = 0, wanFixed, yiFixed, wanYiFixed, trimEndZeros
|
|
49
65
|
const abs = Math.abs(value);
|
50
66
|
if (abs < 10000) {
|
51
67
|
let ret = value.toFixed(fixed);
|
52
|
-
ret =
|
68
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
53
69
|
return ret;
|
54
70
|
}
|
55
71
|
if (abs < 100000000) {
|
56
72
|
fixed = (isNumber(wanFixed) && wanFixed) || fixed;
|
57
|
-
return toWan(value, { fixed, trimEndZeros, space });
|
73
|
+
return toWan(value, { fixed, withCommas, trimEndZeros, space });
|
58
74
|
}
|
59
75
|
if (abs < 1000000000000) {
|
60
76
|
fixed = (isNumber(yiFixed) && yiFixed) || fixed;
|
61
|
-
return toYi(value, { fixed, trimEndZeros, space });
|
77
|
+
return toYi(value, { fixed, withCommas, trimEndZeros, space });
|
62
78
|
}
|
63
79
|
fixed = (isNumber(wanYiFixed) && wanYiFixed) || fixed;
|
64
|
-
return toWanYi(value, { fixed, trimEndZeros, space });
|
80
|
+
return toWanYi(value, { fixed, withCommas, trimEndZeros, space });
|
65
81
|
}
|
66
82
|
exports.toAuto = toAuto;
|
67
|
-
function toPercent(value, { fixed = 0, trimEndZeros = false, space = "", nanString = "NaN" } = {}) {
|
83
|
+
function toPercent(value, { fixed = 0, withCommas = false, trimEndZeros = false, space = "", nanString = "NaN", } = {}) {
|
68
84
|
value = parseNumber(value);
|
69
85
|
if (isNaN(value)) {
|
70
86
|
return nanString;
|
71
87
|
}
|
72
88
|
let ret = (value * 100).toFixed(fixed);
|
73
|
-
ret =
|
89
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
74
90
|
return ret + space + "%";
|
75
91
|
}
|
76
92
|
exports.toPercent = toPercent;
|
@@ -134,12 +150,16 @@ function isNotNumber(value) {
|
|
134
150
|
return !Number.isFinite(value);
|
135
151
|
}
|
136
152
|
exports.isNotNumber = isNotNumber;
|
153
|
+
function addCommas(value) {
|
154
|
+
return value.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
155
|
+
}
|
156
|
+
exports.addCommas = addCommas;
|
137
157
|
function formatWithCommas(value, { strNaN } = { strNaN: "NaN" }) {
|
138
158
|
const val = parseNumber(value);
|
139
159
|
if (isNaN(val)) {
|
140
160
|
return strNaN;
|
141
161
|
}
|
142
|
-
return val.toString()
|
162
|
+
return addCommas(val.toString());
|
143
163
|
}
|
144
164
|
exports.formatWithCommas = formatWithCommas;
|
145
165
|
function removeNumberCommas(str) {
|
@@ -148,4 +168,13 @@ function removeNumberCommas(str) {
|
|
148
168
|
return str.replace(/(?<=\d{1,3}),(?=(\d{3})+(?!\d))/g, "");
|
149
169
|
}
|
150
170
|
exports.removeNumberCommas = removeNumberCommas;
|
171
|
+
function numberFallback(...args) {
|
172
|
+
for (const arg of args) {
|
173
|
+
if (isNumber(arg)) {
|
174
|
+
return arg;
|
175
|
+
}
|
176
|
+
}
|
177
|
+
return NaN;
|
178
|
+
}
|
179
|
+
exports.numberFallback = numberFallback;
|
151
180
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/test.js
CHANGED
@@ -6,7 +6,7 @@ console.log((0, index_1.toAuto)(NaN, { nanString: "invalid" })); // invalid
|
|
6
6
|
console.log((0, index_1.toAuto)(1234)); // 1234
|
7
7
|
console.log((0, index_1.toAuto)(12345)); // 1万
|
8
8
|
console.log((0, index_1.toAuto)(123456789)); // 1亿
|
9
|
-
console.log((0, index_1.toAuto)(1234, { fixed: 1 })); //
|
9
|
+
console.log((0, index_1.toAuto)(1234, { fixed: 1, withCommas: true })); // 1,234.0
|
10
10
|
console.log((0, index_1.toAuto)(12345, { fixed: 1 })); // 1.2万
|
11
11
|
console.log((0, index_1.toAuto)(12345, { wanFixed: 2 })); // 1.23万
|
12
12
|
console.log((0, index_1.toAuto)(123456789, { fixed: 2, space: " " })); // 1.23 亿
|
@@ -41,4 +41,12 @@ console.log((0, index_1.formatWithCommas)("abc")); // "NaN"
|
|
41
41
|
console.log((0, index_1.formatWithCommas)("abc", { strNaN: "" })); // ""
|
42
42
|
console.log((0, index_1.removeNumberCommas)("123,456,789")); // 123456789
|
43
43
|
console.log((0, index_1.removeNumberCommas)("1,23,456")); // 1,23456
|
44
|
+
console.log((0, index_1.removeNumberCommas)(""));
|
45
|
+
console.log((0, index_1.numberFallback)(1, 2, 3, "abc")); // 1
|
46
|
+
console.log((0, index_1.numberFallback)(undefined, 2, 3, "abc")); // 2
|
47
|
+
console.log((0, index_1.numberFallback)(null, 2, 3, "abc")); // 2
|
48
|
+
console.log((0, index_1.numberFallback)(NaN, 2, 3, "abc")); // 2
|
49
|
+
console.log((0, index_1.numberFallback)(0, 2, 3, "abc")); // 0
|
50
|
+
console.log((0, index_1.toDigit)(1234567.89, { withCommas: true })); // 1,234,567.89
|
51
|
+
console.log((0, index_1.toDigit)(-1234567.89, { withCommas: false, fixed: 1 })); // -1234567.9
|
44
52
|
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAAA,
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
@@ -5,9 +5,20 @@ type Options = {
|
|
5
5
|
wanYiFixed?: number;
|
6
6
|
trimEndZeros?: boolean;
|
7
7
|
nanString?: string;
|
8
|
+
withCommas?: boolean;
|
8
9
|
space?: string;
|
9
10
|
};
|
10
11
|
|
12
|
+
function format(
|
13
|
+
value: string,
|
14
|
+
{ withCommas = false, trimEndZeros = false }: { withCommas?: boolean; trimEndZeros?: boolean }
|
15
|
+
) {
|
16
|
+
let ret = value;
|
17
|
+
ret = trimEndZeros ? trimTrailingZeros(ret) : ret;
|
18
|
+
ret = withCommas ? addCommas(ret) : ret;
|
19
|
+
return ret;
|
20
|
+
}
|
21
|
+
|
11
22
|
export function trimTrailingZeros(numberString: string): string {
|
12
23
|
// Check if the string contains a decimal point
|
13
24
|
if (numberString.includes(".")) {
|
@@ -18,42 +29,73 @@ export function trimTrailingZeros(numberString: string): string {
|
|
18
29
|
return numberString;
|
19
30
|
}
|
20
31
|
|
32
|
+
export function toDigit(
|
33
|
+
value: any,
|
34
|
+
{ fixed = 2, withCommas = false, trimEndZeros = false, nanString = "NaN" }: Options
|
35
|
+
) {
|
36
|
+
value = parseNumber(value);
|
37
|
+
if (isNaN(value)) {
|
38
|
+
return nanString;
|
39
|
+
}
|
40
|
+
let ret = value.toFixed(fixed);
|
41
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
42
|
+
return ret;
|
43
|
+
}
|
44
|
+
|
21
45
|
export function toWan(
|
22
46
|
value: any,
|
23
|
-
{
|
47
|
+
{
|
48
|
+
fixed = 0,
|
49
|
+
withCommas = false,
|
50
|
+
trimEndZeros = false,
|
51
|
+
space = "",
|
52
|
+
nanString = "NaN",
|
53
|
+
}: Options = {}
|
24
54
|
): string {
|
25
55
|
value = parseNumber(value);
|
26
56
|
if (isNaN(value)) {
|
27
57
|
return nanString;
|
28
58
|
}
|
29
59
|
let ret = (value / 10000).toFixed(fixed);
|
30
|
-
ret =
|
60
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
31
61
|
return ret + space + "万";
|
32
62
|
}
|
33
63
|
|
34
64
|
export function toYi(
|
35
65
|
value: any,
|
36
|
-
{
|
66
|
+
{
|
67
|
+
fixed = 0,
|
68
|
+
withCommas = false,
|
69
|
+
trimEndZeros = false,
|
70
|
+
space = "",
|
71
|
+
nanString = "NaN",
|
72
|
+
}: Options = {}
|
37
73
|
): string {
|
38
74
|
value = parseNumber(value);
|
39
75
|
if (isNaN(value)) {
|
40
76
|
return nanString;
|
41
77
|
}
|
42
78
|
let ret = (value / 100000000).toFixed(fixed);
|
43
|
-
ret =
|
79
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
44
80
|
return ret + space + "亿";
|
45
81
|
}
|
46
82
|
|
47
83
|
export function toWanYi(
|
48
84
|
value: any,
|
49
|
-
{
|
85
|
+
{
|
86
|
+
fixed = 0,
|
87
|
+
withCommas = false,
|
88
|
+
trimEndZeros = false,
|
89
|
+
space = "",
|
90
|
+
nanString = "NaN",
|
91
|
+
}: Options = {}
|
50
92
|
): string {
|
51
93
|
value = parseNumber(value);
|
52
94
|
if (isNaN(value)) {
|
53
95
|
return nanString;
|
54
96
|
}
|
55
97
|
let ret = (value / 1000000000000).toFixed(fixed);
|
56
|
-
ret =
|
98
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
57
99
|
return ret + space + "万亿";
|
58
100
|
}
|
59
101
|
|
@@ -64,6 +106,7 @@ export function toAuto(
|
|
64
106
|
wanFixed,
|
65
107
|
yiFixed,
|
66
108
|
wanYiFixed,
|
109
|
+
withCommas = false,
|
67
110
|
trimEndZeros = false,
|
68
111
|
space = "",
|
69
112
|
nanString = "NaN",
|
@@ -76,31 +119,37 @@ export function toAuto(
|
|
76
119
|
const abs = Math.abs(value);
|
77
120
|
if (abs < 10000) {
|
78
121
|
let ret = value.toFixed(fixed);
|
79
|
-
ret =
|
122
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
80
123
|
return ret;
|
81
124
|
}
|
82
125
|
if (abs < 100000000) {
|
83
126
|
fixed = (isNumber(wanFixed) && wanFixed) || fixed;
|
84
|
-
return toWan(value, { fixed, trimEndZeros, space });
|
127
|
+
return toWan(value, { fixed, withCommas, trimEndZeros, space });
|
85
128
|
}
|
86
129
|
if (abs < 1000000000000) {
|
87
130
|
fixed = (isNumber(yiFixed) && yiFixed) || fixed;
|
88
|
-
return toYi(value, { fixed, trimEndZeros, space });
|
131
|
+
return toYi(value, { fixed, withCommas, trimEndZeros, space });
|
89
132
|
}
|
90
133
|
fixed = (isNumber(wanYiFixed) && wanYiFixed) || fixed;
|
91
|
-
return toWanYi(value, { fixed, trimEndZeros, space });
|
134
|
+
return toWanYi(value, { fixed, withCommas, trimEndZeros, space });
|
92
135
|
}
|
93
136
|
|
94
137
|
export function toPercent(
|
95
138
|
value: any,
|
96
|
-
{
|
139
|
+
{
|
140
|
+
fixed = 0,
|
141
|
+
withCommas = false,
|
142
|
+
trimEndZeros = false,
|
143
|
+
space = "",
|
144
|
+
nanString = "NaN",
|
145
|
+
}: Options = {}
|
97
146
|
): string {
|
98
147
|
value = parseNumber(value);
|
99
148
|
if (isNaN(value)) {
|
100
149
|
return nanString;
|
101
150
|
}
|
102
151
|
let ret = (value * 100).toFixed(fixed);
|
103
|
-
ret =
|
152
|
+
ret = format(ret, { withCommas, trimEndZeros });
|
104
153
|
return ret + space + "%";
|
105
154
|
}
|
106
155
|
|
@@ -170,12 +219,16 @@ export function isNotNumber(value: any): boolean {
|
|
170
219
|
return !Number.isFinite(value);
|
171
220
|
}
|
172
221
|
|
222
|
+
export function addCommas(value: string): string {
|
223
|
+
return value.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
224
|
+
}
|
225
|
+
|
173
226
|
export function formatWithCommas(value: any, { strNaN } = { strNaN: "NaN" }): string {
|
174
227
|
const val = parseNumber(value);
|
175
228
|
if (isNaN(val)) {
|
176
229
|
return strNaN;
|
177
230
|
}
|
178
|
-
return val.toString()
|
231
|
+
return addCommas(val.toString());
|
179
232
|
}
|
180
233
|
|
181
234
|
export function removeNumberCommas(str: string): string {
|
@@ -183,3 +236,12 @@ export function removeNumberCommas(str: string): string {
|
|
183
236
|
// 匹配规则:逗号右侧必须是3的倍数的连续数字,直到遇到非数字字符或结尾
|
184
237
|
return str.replace(/(?<=\d{1,3}),(?=(\d{3})+(?!\d))/g, "");
|
185
238
|
}
|
239
|
+
|
240
|
+
export function numberFallback(...args: any[]): number {
|
241
|
+
for (const arg of args) {
|
242
|
+
if (isNumber(arg)) {
|
243
|
+
return arg;
|
244
|
+
}
|
245
|
+
}
|
246
|
+
return NaN;
|
247
|
+
}
|
package/src/test.ts
CHANGED
@@ -2,9 +2,11 @@ import {
|
|
2
2
|
formatWithCommas,
|
3
3
|
isNotNumber,
|
4
4
|
isNumber,
|
5
|
+
numberFallback,
|
5
6
|
parseNumber,
|
6
7
|
removeNumberCommas,
|
7
8
|
toAuto,
|
9
|
+
toDigit,
|
8
10
|
toPercent,
|
9
11
|
} from "./index";
|
10
12
|
|
@@ -14,7 +16,7 @@ console.log(toAuto(1234)); // 1234
|
|
14
16
|
console.log(toAuto(12345)); // 1万
|
15
17
|
console.log(toAuto(123456789)); // 1亿
|
16
18
|
|
17
|
-
console.log(toAuto(1234, { fixed: 1 })); //
|
19
|
+
console.log(toAuto(1234, { fixed: 1, withCommas: true })); // 1,234.0
|
18
20
|
console.log(toAuto(12345, { fixed: 1 })); // 1.2万
|
19
21
|
console.log(toAuto(12345, { wanFixed: 2 })); // 1.23万
|
20
22
|
console.log(toAuto(123456789, { fixed: 2, space: " " })); // 1.23 亿
|
@@ -54,3 +56,13 @@ console.log(formatWithCommas("abc", { strNaN: "" })); // ""
|
|
54
56
|
|
55
57
|
console.log(removeNumberCommas("123,456,789")); // 123456789
|
56
58
|
console.log(removeNumberCommas("1,23,456")); // 1,23456
|
59
|
+
console.log(removeNumberCommas(""));
|
60
|
+
|
61
|
+
console.log(numberFallback(1, 2, 3, "abc")); // 1
|
62
|
+
console.log(numberFallback(undefined, 2, 3, "abc")); // 2
|
63
|
+
console.log(numberFallback(null, 2, 3, "abc")); // 2
|
64
|
+
console.log(numberFallback(NaN, 2, 3, "abc")); // 2
|
65
|
+
console.log(numberFallback(0, 2, 3, "abc")); // 0
|
66
|
+
|
67
|
+
console.log(toDigit(1234567.89, { withCommas: true })); // 1,234,567.89
|
68
|
+
console.log(toDigit(-1234567.89, { withCommas: false, fixed: 1 })); // -1234567.9
|