0.0.6 • Published 1 year ago

sr-utils-base v0.0.6

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

电商场景下,常用基础工具函数集合。

一、视图显示

1、金额

1.1 priceFormat

说明:格式化金额为可以直接显示的字符串 \ 参数 \ price (number|string|Big): 金额(分) \ fill=false: 是否保持两位小数 \ fallback='': 无效金额时的默认返回 \ 返回 \ (string): 返回一个处理好的字符串。 \ 例子

_.priceFormat(1000, true);
// =>10.00
_.priceFormat(1000);
// =>10

2、数字

2.1 numberFromat

说明:数量格式化 \ 参数 \ number (any): 待格式化的参数 \ decimal=0: 小数精度 \ thousandMark=false: 是否插入千分位 \ 返回 \ (string): 返回一个处理好的字符串。 \ 例子

\_.numberFromat(1000000, 2, true);
// =>1,000,000.00
_.numberFromat(1000000);
// =>1000000

2.2 add(加), subtract(减), multiply(乘), divide(除)

说明:数字加减乘除运算并不丢失精度 \ 参数 \ num1 (number): 参与计算的参数 1 \ num2 (number): 参与计算的参数 2 \ digits=2: 输出结果保留的小数精度 \ 返回 \ (string): 返回一个处理好的字符串。 \ 例子

\_.add(100.01, 2.2);
// =>102.21
_.add(100.01, 2.2, 1);
// =>102.2

3、单位转换

3.1 fen2Yuan

说明:分转换为元 \ 参数 \ fen (number | string | undefined | null): 待转换的参数 \ 返回 \ (string): 返回处理好的字符串。 \ 例子

\_.fen2Yuan(1011);
// =>10.11
_.fen2Yuan(1010);
// =>10.1

3.2 yuan2Fen

说明:元转换为分 \ 参数 \ yuan (number | string ): 待转换的参数 \ 返回 \ (string): 返回处理好的数字。 \ 例子

\_.yuan2Fen(101.111);
// =>10111
_.yuan2Fen(101);
// =>10100

3.3 kg2g

说明:kg 转换为 g \ 参数 \ kg (number ): 待转换的参数 \ 返回 \ (number): 返回转换后的 g 数。 \ 例子

\_.kg2g(101.1);
// =>101100

3.4 g2kg

说明:g 转换为 kg \ 参数 \ g (number ): 待转换的参数 \ 返回 \ (number): 返回转换后的 kg 数。 \ 例子

\_.g2kg(101);
// =>0.101

3.5 km2m

说明:km 转换为 m \ 参数 \ km (number ): 待转换的参数 \ 返回 \ (number): 返回转换后的 m。 \ 例子

\_.km2m(10);
// =>10000

3.6 m2km

说明:m 转换为 km \ 参数 \ m (number ): 待转换的参数 \ 返回 \ (number): 返回转换后的 km。 \ 例子

\_.m2km(10);
// =>0.01

3.7 percentToDiscount

说明:百分比转折扣数字 \ 参数 \ value (any): 待转换的参数 \ 返回 \ (number): 返回转换后的折扣。 \ 例子

\_.percentToDiscount(70);
// =>7
\_.percentToDiscount(75);
// =>7.5

4、手机号

4.1 percentToDiscount

说明:百分比转折扣数字 \ 参数 \ phone (number | string): 待转换的参数 \ 返回 \ (number | string): 中间四位打*号的手机号。 \ 例子

\_.phoneNumberEncryption(18511590764);
// =>185****0764

5、url

5.1 objToUrlStr

说明:将 object 转成 url 后的参数 string \ 参数 \ obj (object): 待格式化的 obj \ urlEncode=false: 是否开启 encode \ appendixStr='&': 需要拼接的后续 string \ 返回 \ (string): 拼接好的字符串 \ 例子

\_.objToUrlStr({a:1,b:'222',c:'我是参数'});
// =>a=1&b=222&c=我是参数
\_.objToUrlStr({a:1,b:'222',c:'我是参数'},true);
// =>a=1&b=222&c=%E6%88%91%E6%98%AF%E5%8F%82%E6%95%B0
\_.objToUrlStr({a:1,b:'222',c:'我是参数'},true,'-');
// a=1-b=222-c=%E6%88%91%E6%98%AF%E5%8F%82%E6%95%B0

5.2 urlStrToObj

说明:将 url 后的参数 string 转成 object \ 参数 \ url (sting): 待格式化的 string \ urlDecode=false: 是否需要 decode \ 返回 \ (object): 转化好的 object \ 例子

\_.urlStrToObj('?abc=foo&def=%5Basf%5D&xyz=5', true);
// =>{ abc: 'foo', def: '[asf]', xyz: '5' }
\_.urlStrToObj('abc=foo&def=%5Basf%5D&xyz=5');
// =>{ abc: 'foo', def: '%5Basf%5D', xyz: '5' }

二、判断与校验

1、数据类型判断

isNaN, isArray, isEmpty, isFunction, isJsonString, isNull, isNumber, isObject, isString, isUndefined

2、常用校验

2.1 isEmail

说明:验证是否是邮箱地址 \ 参数 \ num (string): 待验证的字符串 \ 返回 \ (boolean): 是否是邮箱 \ 例子

\_.isEmail('441332612@qq.com');
// =>true

2.2 isMobilePhone

说明:验证是否是手机号(可含 86) \ 参数 \ num (string): 待验证的字符串 \ 返回 \ (boolean): 是否是手机号 \ 例子

\_.isMobilePhone('18511590764');
// =>true
\_.isMobilePhone('8618511590764');
// =>true

2.3 isPostCode

说明:验证是否是邮编 \ 参数 \ num (string): 待验证的字符串 \ 返回 \ (boolean): 是否是邮编 \ 例子

\_.isPostCode('454781');
// =>true

2.4 isValidIDCard

说明:验证是否是身份证号 \ 参数 \ value (string): 待验证的字符串 \ isIncludeHongKongAndAoMenAndTaiwan=true: 是否包含港澳台 \ 返回 \ (boolean): 是否是身份证号 \ 例子

\_.isValidIDCard('410883199309236543');
// =>true

2.5 isPositiveNum

说明:验证是否是正数 \ 参数 \ value (number): 待验证的参数 \ 返回 \ (boolean): 是否是正数 \ 例子

\_.isPositiveNum(3.1);
// =>true
\_.isPositiveNum(-3.1);
// =>false

2.6 isPositiveInteger

说明:验证是否是正正数数 \ 参数 \ value (number): 待验证的参数 \ 返回 \ (boolean): 是否是正整数 \ 例子

\_.isPositiveInteger(3.1);
// =>false
\_.isPositiveInteger(3);
// =>true

2.7 digitalCheck

说明:所填数字范围校验 \ 参数 \ value (string): 待验证的参数 \ minValue (number): 最小值(不包含) \ maxValue (number): 最大值(不包含) \ decimalPlaces = 0: 第一个参数的小数位最多有几位 \ 返回 \ (boolean): 是否符合验证条件(在最小值和最大值之间且小数位数满足要求) \ 例子

\_.digitalCheck('6.55',3,10);
// =>false
\_.digitalCheck('6.55',3,10,2);
// =>true

三、功能性方法

1、图片

1.1 imageMogr

enum EnumImageMogr2Type { \ CROP = 'crop', // 裁剪 \ THUMBNAIL = 'thumbnail', // 缩放\ }\ interface ImageMogrOptions { \ width?: number; \ height?: number; \ quality?: number; \ strip?: boolean; \ format?: 'jpg' | 'bmp' | 'gif' | 'png' | 'webp' | 'yjpeg'; \ interlace?: 0 | 1; \ type?: EnumImageMogr2Type; \ }\ 说明:万象图片处理 \ 参数 \ url? (string): 待验证的参数 \ options? (ImageMogrOptions): 最小值(不包含) \ 返回 \ (string): 返回处理后的图片地址 \ 例子

\_.imageMogr('https://cdn-we-retail.ym.tencent.com//web/order_ic_lite.png', {
    width: 300,
    height: 300,
    quality: 0.5,
    format: 'png',
  });
// =>https://cdn-we-retail.ym.tencent.com//web/order_ic_lite.png?imageMogr2/thumbnail/300x300/quality/0.5/strip/format/png

2、颜色

2.1 hexToRgb

说明:颜色处理 hex ---> rgb \ 参数 \ h (string): 待处理的哈希值 \ 返回 \ (string): 返回处理后的 rgb 格式 \ 例子

\_.hexToRgb('#5a66ff')
// =>rgb(90,102,255)

2.2 rgbaToHexA

说明:颜色处理 rgba ---> hex \ 参数 \ r (number): 0~255 \ g (number): 0~255 \ b (number): 0~255 \ a (number): 0~1 \ 返回 \ (string): 返回处理后的 hex 格式 \ 例子

\_.rgbaToHexA(90, 102, 255, 0.2)
// =>#5a66ff33

3 时间处理

3.1 timeFormat

说明:时间格式化 \ 参数 \ base (string | number | Moment): 待处理的时间 \ tmpl = 'YYYY-MM-DD HH:mm:ss': 输出的时间格式 \ 返回 \ (string): 返回处理好的时间 \ 例子

\_.timeFormat('2022-11-11 14:48:26', 'YYYY-MM-DD')
// => 2022-11-11
\_.timeFormat(1669013697063)
// => 2022-11-21 14:54:57
\_.timeFormat('1669013697063')
// => 2022-11-21 14:54:57

4 字符串

4.1 getStrLen

说明:时间格式化 \ 参数 \ str (string): 待处理的时间 \ 返回 \ (number): 返回字符串的长度(中文+2) \ 例子

\_.getStrLen('')
// => 0
\_.getStrLen('abc)
// => 3
\_.getStrLen('abc哈哈')
// => 7

5 安全

5.1 nanoid

说明:生成随机不重复的 key \ 参数 \ size? (number): 生成串的长度 \ 返回 \ (string): 返回加密好的字符串 \ 例子

\_.nanoid('10')
// => BxNhJFhDwp
\_.nanoid('10')
// => KJ_LtzVP0SPKwzw_fQg8b

5.2 nanoNum

说明:生成随机不重复的 key \ 返回 \ (number): 返回加密好的串 \ 例子

\_.nanoNum()
// => 514208596452099

6 位置

6.1 getCoordinateDistance

说明:计算获取两个坐标点之间的距离(m) \ 参数 \ lat1 (number): 第一个坐标的经度 \ lng1 (number): 第一个坐标的纬度 \ lat2 (number): 第二个坐标的经度 \ lng2 (number): 第二个坐标的纬度 \ 返回 \ (number): 返回字符串的长度(中文+2) \ 例子

\_.getCoordinateDistance(109.7, 31.84, 110.96, 31.36)
// => 141789.1293000133

7 请求

7.1 sleep

说明:睡眠函数 \ 参数 \ sleep (number): 延迟时间 ms \ 返回 \ (promise): promise \ 例子

\_.sleep(500)

7.2 getErrMsg

说明:睡眠函数 \ 参数 \ err (unknown): err 数据 \ defaultMsg = '网络错误': 默认的错误消息 \ 返回 \ (string): 返回错误信息 \ 例子

\_.getErrMsg({msg: '接口超时'})
// => 接口超时

8 位置

8.1 downloadFile

说明:文件下载 \ 参数 \ fileUrl (string): 文件地址 \ fileName (string): 文件名称 \ 例子

\_.downloadFile('https://cdn-we-retail.ym.tencent.com//web/order_ic_lite.png', '示例图片')