sr-utils-base

0.0.6 • Public • Published

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

一、视图显示

1、金额

1.1 priceFormat

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

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

2、数字

2.1 numberFromat

  说明:数量格式化
  参数
    number (any): 待格式化的参数
    [decimal=0] (number): 小数精度
    [thousandMark=false] (boolean): 是否插入千分位
  返回
    (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] (number): 输出结果保留的小数精度
  返回
    (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] (boolean): 是否开启 encode
    [appendixStr='&'] (string): 需要拼接的后续 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] (boolean): 是否需要 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): 是否包含港澳台
  返回
    (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] (number): 第一个参数的小数位最多有几位
  返回
    (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): 0255
    g (number): 0
255
    b (number): 0255
    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): 输出的时间格式
  返回
    (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): 默认的错误消息
  返回
    (string): 返回错误信息
  例子

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

8 位置

8.1 downloadFile

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

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

Readme

Keywords

none

Package Sidebar

Install

npm i sr-utils-base

Weekly Downloads

1

Version

0.0.6

License

MIT

Unpacked Size

223 kB

Total Files

45

Last publish

Collaborators

  • xuerlin02