电商场景下,常用基础工具函数集合。
说明:格式化金额为可以直接显示的字符串
参数
price (number|string|Big): 金额(分)
[fill=false] (boolean): 是否保持两位小数
[fallback=''] (string): 无效金额时的默认返回
返回
(string): 返回一个处理好的字符串。
例子
_.priceFormat(1000, true);
// =>10.00
_.priceFormat(1000);
// =>10
说明:数量格式化
参数
number (any): 待格式化的参数
[decimal=0] (number): 小数精度
[thousandMark=false] (boolean): 是否插入千分位
返回
(string): 返回一个处理好的字符串。
例子
\_.numberFromat(1000000, 2, true);
// =>1,000,000.00
_.numberFromat(1000000);
// =>1000000
说明:数字加减乘除运算并不丢失精度
参数
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
说明:分转换为元
参数
fen (number | string | undefined | null): 待转换的参数
返回
(string): 返回处理好的字符串。
例子
\_.fen2Yuan(1011);
// =>10.11
_.fen2Yuan(1010);
// =>10.1
说明:元转换为分
参数
yuan (number | string ): 待转换的参数
返回
(string): 返回处理好的数字。
例子
\_.yuan2Fen(101.111);
// =>10111
_.yuan2Fen(101);
// =>10100
说明:kg 转换为 g
参数
kg (number ): 待转换的参数
返回
(number): 返回转换后的 g 数。
例子
\_.kg2g(101.1);
// =>101100
说明:g 转换为 kg
参数
g (number ): 待转换的参数
返回
(number): 返回转换后的 kg 数。
例子
\_.g2kg(101);
// =>0.101
说明:km 转换为 m
参数
km (number ): 待转换的参数
返回
(number): 返回转换后的 m。
例子
\_.km2m(10);
// =>10000
说明:m 转换为 km
参数
m (number ): 待转换的参数
返回
(number): 返回转换后的 km。
例子
\_.m2km(10);
// =>0.01
说明:百分比转折扣数字
参数
value (any): 待转换的参数
返回
(number): 返回转换后的折扣。
例子
\_.percentToDiscount(70);
// =>7
\_.percentToDiscount(75);
// =>7.5
说明:百分比转折扣数字
参数
phone (number | string): 待转换的参数
返回
(number | string): 中间四位打*号的手机号。
例子
\_.phoneNumberEncryption(18511590764);
// =>185****0764
说明:将 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
说明:将 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' }
isNaN, isArray, isEmpty, isFunction, isJsonString, isNull, isNumber, isObject, isString, isUndefined
说明:验证是否是邮箱地址
参数
num (string): 待验证的字符串
返回
(boolean): 是否是邮箱
例子
\_.isEmail('441332612@qq.com');
// =>true
说明:验证是否是手机号(可含 86)
参数
num (string): 待验证的字符串
返回
(boolean): 是否是手机号
例子
\_.isMobilePhone('18511590764');
// =>true
\_.isMobilePhone('8618511590764');
// =>true
说明:验证是否是邮编
参数
num (string): 待验证的字符串
返回
(boolean): 是否是邮编
例子
\_.isPostCode('454781');
// =>true
说明:验证是否是身份证号
参数
value (string): 待验证的字符串
[isIncludeHongKongAndAoMenAndTaiwan=true] (boolean): 是否包含港澳台
返回
(boolean): 是否是身份证号
例子
\_.isValidIDCard('410883199309236543');
// =>true
说明:验证是否是正数
参数
value (number): 待验证的参数
返回
(boolean): 是否是正数
例子
\_.isPositiveNum(3.1);
// =>true
\_.isPositiveNum(-3.1);
// =>false
说明:验证是否是正正数数
参数
value (number): 待验证的参数
返回
(boolean): 是否是正整数
例子
\_.isPositiveInteger(3.1);
// =>false
\_.isPositiveInteger(3);
// =>true
说明:所填数字范围校验
参数
value (string): 待验证的参数
minValue (number): 最小值(不包含)
maxValue (number): 最大值(不包含)
[decimalPlaces = 0] (number): 第一个参数的小数位最多有几位
返回
(boolean): 是否符合验证条件(在最小值和最大值之间且小数位数满足要求)
例子
\_.digitalCheck('6.55',3,10);
// =>false
\_.digitalCheck('6.55',3,10,2);
// =>true
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
说明:颜色处理 hex ---> rgb
参数
h (string): 待处理的哈希值
返回
(string): 返回处理后的 rgb 格式
例子
\_.hexToRgb('#5a66ff')
// =>rgb(90,102,255)
说明:颜色处理 rgba ---> hex
参数
r (number): 0255 255
g (number): 0
b (number): 0255 1
a (number): 0
返回
(string): 返回处理后的 hex 格式
例子
\_.rgbaToHexA(90, 102, 255, 0.2)
// =>#5a66ff33
说明:时间格式化
参数
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
说明:时间格式化
参数
str (string): 待处理的时间
返回
(number): 返回字符串的长度(中文+2)
例子
\_.getStrLen('')
// => 0
\_.getStrLen('abc)
// => 3
\_.getStrLen('abc哈哈')
// => 7
说明:生成随机不重复的 key
参数
size? (number): 生成串的长度
返回
(string): 返回加密好的字符串
例子
\_.nanoid('10')
// => BxNhJFhDwp
\_.nanoid('10')
// => KJ_LtzVP0SPKwzw_fQg8b
说明:生成随机不重复的 key
返回
(number): 返回加密好的串
例子
\_.nanoNum()
// => 514208596452099
说明:计算获取两个坐标点之间的距离(m)
参数
lat1 (number): 第一个坐标的经度
lng1 (number): 第一个坐标的纬度
lat2 (number): 第二个坐标的经度
lng2 (number): 第二个坐标的纬度
返回
(number): 返回字符串的长度(中文+2)
例子
\_.getCoordinateDistance(109.7, 31.84, 110.96, 31.36)
// => 141789.1293000133
说明:睡眠函数
参数
sleep (number): 延迟时间 ms
返回
(promise): promise
例子
\_.sleep(500)
说明:睡眠函数
参数
err (unknown): err 数据
[defaultMsg = '网络错误'] (string): 默认的错误消息
返回
(string): 返回错误信息
例子
\_.getErrMsg({msg: '接口超时'})
// => 接口超时
说明:文件下载
参数
fileUrl (string): 文件地址
fileName (string): 文件名称
例子
\_.downloadFile('https://cdn-we-retail.ym.tencent.com//web/order_ic_lite.png', '示例图片')