Skip to content

Commit

Permalink
feat: 千分位分隔符
Browse files Browse the repository at this point in the history
  • Loading branch information
heiyehk committed Jan 11, 2022
1 parent 52e9ab1 commit 96af711
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 0 deletions.
22 changes: 22 additions & 0 deletions packages/utils/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,17 @@ filterObjectEmpty({
random4Code();
// dsj1
```
### randomChar 生成指定长度的字符,可选择`number`(数字), `lowercase`(小写字母), `capital`(大写字母)
``` ts
randomChar();
// zZqt

randomChar(32);
// w2rAOdMRqhlhNEYzVUv2zw0Zp616rNFp

randomChar(32, ['number']);
// 05099593713036830668381743720300
```
### randomNumber 生成数字
``` ts
randomNumber(100);
Expand All @@ -122,6 +133,17 @@ randomNumber(100);
randomNumber(1, 3);
// 2
```
### currency 千分位分隔
``` ts
currency(987654321);
// '987,654,321.00'

currency(987654321, 1);
// '987,654,321.0'

currency(987654321, 0);
// '987,654,321'
```
### toHump 下划线转驼峰
``` ts
toHump('a_bc_d_e');
Expand Down
16 changes: 16 additions & 0 deletions packages/utils/lib/number.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,19 @@ export declare const convertCurrency: (money: number | string) => string;
```
*/
export declare const randomNumber: (min: number | undefined, max: number) => number;
/**
* 千分位分隔
* @param value
* @example
* ``` ts
currency(987654321);
// '987,654,321.00'
currency(987654321, 1);
// '987,654,321.0'
currency(987654321, 0);
// '987,654,321'
```
*/
export declare const currency: (value: string | number, len?: number) => string;
31 changes: 31 additions & 0 deletions packages/utils/lib/number.js
Original file line number Diff line number Diff line change
Expand Up @@ -158,3 +158,34 @@ export var randomNumber = function (min, max) {
if (min === void 0) { min = 0; }
return Math.floor(Math.random() * (max - min + 1)) + min;
};
/**
* 千分位分隔
* @param value
* @example
* ``` ts
currency(987654321);
// '987,654,321.00'
currency(987654321, 1);
// '987,654,321.0'
currency(987654321, 0);
// '987,654,321'
```
*/
export var currency = function (value, len) {
if (len === void 0) { len = 2; }
if (!value)
return len ? "0.".concat(new Array(len).fill(0).join('')) : '0';
var newValue = Number(String(value).replace(/[^\d.-]/g, '')).toFixed(len) + '';
var left = newValue.split('.')[0].split('').reverse();
var right = newValue.split('.')[1];
var t = '';
for (var i = 0; i < left.length; i++) {
t += left[i] + ((i + 1) % 3 === 0 && i + 1 !== left.length ? ',' : '');
}
if (right) {
return t.split('').reverse().join('') + '.' + right;
}
return t.split('').reverse().join('');
};
30 changes: 30 additions & 0 deletions packages/utils/src/number.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,3 +157,33 @@ export const convertCurrency = (money: number | string) => {
export const randomNumber = (min = 0, max: number) => {
return Math.floor(Math.random() * (max - min + 1)) + min;
};

/**
* 千分位分隔
* @param value
* @example
* ``` ts
currency(987654321);
// '987,654,321.00'
currency(987654321, 1);
// '987,654,321.0'
currency(987654321, 0);
// '987,654,321'
```
*/
export const currency = (value: string | number, len = 2) => {
if (!value) return len ? `0.${new Array(len).fill(0).join('')}` : '0';
const newValue = Number(String(value).replace(/[^\d.-]/g, '')).toFixed(len) + '';
const left = newValue.split('.')[0].split('').reverse();
const right = newValue.split('.')[1];
let t = '';
for (let i = 0; i < left.length; i++) {
t += left[i] + ((i + 1) % 3 === 0 && i + 1 !== left.length ? ',' : '');
}
if (right) {
return t.split('').reverse().join('') + '.' + right;
}
return t.split('').reverse().join('');
};

0 comments on commit 96af711

Please sign in to comment.