jun-utils v1.15.0
jun-utils
Installation
Install with npm:
npm install --save-dev jun-utils
Install with yarn:
yarn add jun-utils --dev
Usage
ES6 module:
import { check } from 'jun-utils'; // import check from 'jun-utils/lib/check';
// 手机号码校验
check.cellphone('13456789012'); // true
Script:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jun-utils</title>
<script src="jun-utils.min.js"></script>
</head>
<body>
<script type="text/javascript">
junUtils.check.cellphone('13456789012'); // true
</script>
</body>
</html>
API
索引:
check
校验库
import { check } from 'jun-utils';
cellphone(value)
手机校验 11位数字,首位1
check.cellphone('13456789012'); // true
telphone(value)
固定电话校验 3-4位区号,7-8位直拨号码
check.telphone('0571-85735888'); // true
check.telphone('057185735888'); // true
check.telphone('85735888'); // true
phone(value)
电话【手机和固定电话】校验
check.phone('057185735888'); // true
check.phone('13456789012'); // true
email(value)
邮箱校验 登录名@主机名.域名
check.email('test@163.com'); // true
check.email('te_st@sima.vip.com'); // true
postcode(value)
邮编校验 6位数字
check.postcode('310000'); // true
isNull(value)
空数据校验 undefined, null, ''
check.isNull(); // true
check.isNull(null); // true
check.isNull(''); // true
isNumber(value)
数字校验
check.isNumber('20'); // true
check.isNumber('-20'); // true
check.isNumber('.2'); // false
check.isNumber(.2); // true
check.isNumber(9.007199254740992e+21); // true
isInteger(value)
整数校验 不兼容科学计数法数字
check.isInteger('20'); // true
check.isInteger('-20'); // true
check.isInteger('0.2'); // false
check.isInteger('020'); // false
isDecimal(value)
小数校验 不兼容科学计数法数字
check.isDecimal('0.2'); // true
check.isDecimal('-0.2'); // true
check.isDecimal('20'); // false
check.isDecimal('00.2'); // false
money(value)
金额【元】判断
check.money('-20'); // false
check.money('20.00'); // true
check.money('20.002'); // false
check.money('002'); // false
hasChinese(value)
中文判断
check.hasChinese('中文'); // true
check.hasChinese('。'); // true
idCard(value)
身份证校验:一代身份证【15位】或二代身份证【18位】
check.idCard('330000199001017865'); // true
check.idCard('33000019900101786X'); // true
check.idCard('330000900101786'); // true
ip(value)
ip地址校验
check.ip('192.168.0.1'); // true
alipay(value)
支付宝账号校验 邮箱或手机号
check.alipay('test@163.com'); // true
check.alipay('13456789012'); // true
pwdIntensity(value)
弱密码校验 1-弱|2-中|3-强
规则:
- 位数为6-32位,包括6位或32位
- 包含以下任意两种或以上组成元素:
- 数字
- 大写字母
- 小写字母
- 符号【键盘上可以打出来的符号】
check.pwdIntensity('123456'); // 1
check.pwdIntensity('123456abc'); // 2
check.pwdIntensity('123456abcABC'); // 3
illegalChar(value)
非法字符校验 ",\,\n
check.illegalChar('123\n123'); // true
check.illegalChar('123\t123'); // true
check.illegalChar('123\v123'); // true
check.illegalChar('123\\123'); // true
check.illegalChar('123"123'); // true
check.illegalChar('123'); // false
stringUtil
字符串处理
import { stringUtil } from 'jun-utils';
filterNull(str, format='')
空数据过滤
stringUtil.filterNull('xxx'); // xxx
stringUtil.filterNull(); //
stringUtil.filterNull(null, '--'); // --
floatUtil
浮点数运算【解决精度问题】
import { floatUtil } from 'jun-utils';
add(arg1, arg2, format='')
加法
floatUtil.add(0.1, 0.2); // 0.3
floatUtil.add(2.22, 0.1); // 2.32
floatUtil.add(2.22, 'xx', '--'); // --
subtract(arg1, arg2, format='')
减法
floatUtil.subtract(1.5, 1.2); // 0.3
floatUtil.subtract(0.3, 0.2); // 0.1
multiply(arg1, arg2, format='')
乘法
floatUtil.multiply(19.9, 100); // 1990
floatUtil.multiply(0.7, 180); // 126
divide(arg1, arg2, format='')
除法
floatUtil.divide(0.3, 0.1); // 3
floatUtil.divide(0.69, 10); // 0.069
treeUtil
树结构数据操作
import { treeUtil } from 'jun-utils';
dataConvert(source, options)
数据转换
API
Property | Description | Type | Default |
---|---|---|---|
source | 源数据 | object[] | [] |
options | 配置参数 | object | {} |
options.pId | 源数据父主键key | string | - |
options.rootId | 源数据根节点主键值 | string | - |
options.id | 源数据主键key | string | id |
options.name | 源数据名称key | string | name |
options.tId | 树节点主键key | string | id |
options.tName | 树节点名称key | string | name |
options.children | 树节点子集合key | string | children |
options.raw | 是否保留所有属性 | boolean | false |
options.otherKeys | 其他需要保留的属性 | array | [] |
const source = [
{ id: '330000', value: '浙江省', parentId: '100000' },
{ id: '330100', value: '杭州市', parentId: '330000' },
{ id: '330200', value: '宁波市', parentId: '330000' },
{ id: '320000', value: '江苏省', parentId: '100000' },
{ id: '320100', value: '南京市', parentId: '320000' },
{ id: '320200', value: '无锡市', parentId: '320000' },
];
const options = { rootId: '100000', pId: 'parentId', name: 'value' };
treeUtil.dataConvert(source, options);
// =>
[{
id: '320000',
name: '江苏省',
children: [
{ id: '320100', name: '南京市' },
{ id: '320200', name: '无锡市' },
]
}, {
id: '330000',
name: '浙江省',
children: [
{ id: '330100', name: '杭州市' },
{ id: '330200', name: '宁波市' },
]
}];
dataPick(treeData, values, options)
数据提取
API
Property | Description | Type | Default |
---|---|---|---|
treeData | 源数据 | object[] | [] |
values | 原始值 | array | - |
options | 配置参数 | object | {} |
options.origin | 原始key | string | id |
options.key | 提取key | string | name |
options.children | 子集合key | string | children |
const treeData = [{
id: '320000',
name: '江苏省',
children: [
{ id: '320100', name: '南京市' },
{ id: '320200', name: '无锡市' },
]
}, {
id: '330000',
name: '浙江省',
children: [
{ id: '330100', name: '杭州市' },
{ id: '330200', name: '宁波市' },
]
}];
treeUtil.dataPick(treeData, ['330000', '330100']); // ['浙江省', '杭州市']
dataFind(treeData, value, options)
数据查找
API
Property | Description | Type | Default |
---|---|---|---|
treeData | 源数据 | object[] | [] |
value | 属性值 | string | - |
options | 配置参数 | object | {} |
options.key | key | string | id |
options.children | 子集合key | string | children |
const treeData = [{
id: '320000',
name: '江苏省',
children: [
{ id: '320100', name: '南京市' },
{ id: '320200', name: '无锡市' },
]
}, {
id: '330000',
name: '浙江省',
children: [
{ id: '330100', name: '杭州市' },
{ id: '330200', name: '宁波市' },
]
}];
treeUtil.dataFind(treeData, '330100'); // { id: '330100', name: '杭州市' }
appUtil
app交互
import { appUtil } from 'jun-utils';
isIos()
IOS环境判断
isAndroid()
Android环境判断
isMobile()
移动端【手机、平板设备】环境判断
isWeChat()
微信客户端判断
isAliPay()
支付宝客户端判断
isTaobao()
淘宝客户端判断
alipayJSBridgeReady(callback)
监听alipay容器初始化
alipayTitle(title, subtitle)
支付宝设置标题
appUtil.alipayTitle('标题', '副标题');
alipayPopWindow()
支付宝关闭当前页面
alipayExitApp()
支付宝退出当前应用
convert
数据转换
import { convert } from 'jun-utils';
bytesToSize(value, digit=1, format='0B')
数据容量单位换算
convert.bytesToSize(10240); // 10.0KB
convert.bytesToSize(1024 * 1024, 2); // 1.00MB
convert.bytesToSize('32g'); // 0B
fenToYuan(value, options)
分转化成元
API
Property | Description | Type | Default |
---|---|---|---|
value | 分 | string | number | - |
options | 配置参数 | object | {} |
options.format | 空数据格式化 | string | '0.00' |
options.cutZero | 是否去掉小数末尾多余的零 | boolean | false |
options.toThousands | 是否使用千位分隔符 | boolean | false |
convert.fenToYuan(2000); // 20.00
convert.fenToYuan(2000.45); // 20.00 非正确格式,舍去小数部分
convert.fenToYuan(); // 0.00
convert.fenToYuan(undefined, { format: '--' }); // -- 空数据格式化
fenToYuan(2000, { cutZero: true }); // 20 去掉小数末尾多余的零
fenToYuan(300000, { toThousands: true }); // 3,000 数字千位符分隔
fenToYuan('num'); // '' 错误数据
yuanToFen(value, format='0')
元转化成分
convert.yuanToFen(20); // 2000
convert.yuanToFen(0.02); // 2
convert.yuanToFen(0.002); // 0 非正确格式
convert.yuanToFen(); // 0
convert.yuanToFen(undefined, '--'); // -- 空数据格式化
convert.yuanToFen('num'); // '' 错误数据
numberToCn(value)
阿拉伯数字转中文
处理数字不超过1000000000000【壹万亿】
convert.numberToCn(0.01); // 零点零壹
convert.numberToCn(100); // 壹佰
convert.numberToCn(1008); // 壹仟零捌
convert.numberToCn(10008000); // 壹仟万捌仟
convert.numberToCn(100000800); // 壹亿零捌佰
convert.numberToCn(100008000); // 壹亿零捌仟
convert.numberToCn('12x'); // 数据错误
convert.numberToCn(1000000000000); // 超大数字
currencyToCn(value, format='零元整')
数字金额转换为中文人民币大写
最大处理数字 999999999999.99
convert.currencyToCn(0); // 零元整
convert.currencyToCn(); // 零元整
convert.currencyToCn(undefined, '--'); // -- 空数据格式化
convert.currencyToCn(100000000); // 壹亿元整
convert.currencyToCn(100000001); // 壹亿零壹元整
convert.currencyToCn(999999999999.99); // 玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分
convert.currencyToCn(1.01); // 壹元零壹分
convert.currencyToCn(1.10); // 壹元壹角
convert.currencyToCn('1x'); // 数据错误
convert.currencyToCn(1000000000000); // 超大金额
combination(arr)
列出n个数组所有组合
const arr = [
['黑色', '白色'],
['64G', '128G'],
['国行', '港行'],
['全网通'],
];
combination(arr);
// =>
[
['黑色', '64G', '国行', '全网通'],
['黑色', '64G', '港行', '全网通'],
['黑色', '128G', '国行', '全网通'],
['黑色', '128G', '港行', '全网通'],
['白色', '64G', '国行', '全网通'],
['白色', '64G', '港行', '全网通'],
['白色', '128G', '国行', '全网通'],
['白色', '128G', '港行', '全网通'],
];
toThousands(value)
数字千位符分隔
convert.toThousands(12345678); // 12,345,678
convert.toThousands(12345678.90); // 12,345,678.90
convert.toThousands(); // ''
common
通用方法
import { common } from 'jun-utils';
generateUUID()
生成uuid
common.generateUUID(); // cd2f4b1f-daf2-451c-a9a6-db716c1d82bb
getParameter(name, url=window.location.search)
获取url中的参数
common.getParameter('name', 'http://www.w3school.com?name=xxx'); // xxx
common.getParameter('name', 'http://www.w3school.com?name='); // ''
common.getParameter('name', 'http://www.w3school.com'); // null
loadScript(url, callback)
动态加载js
common.loadScript('https://xxx.js', () => {
console.log('loaded');
});
stopPropagation(evt)
阻止事件冒泡
preventDefault(evt);
阻止事件默认行为
addEvent(target, type, handler, useCapture=false);
添加事件监听
const handler = () => {
console.log('onload');
};
common.addEvent(window, 'load', handler);
removeEvent(target, type, handler, useCapture=false);
移除事件监听
const handler = () => {
console.log('onload');
};
common.removeEvent(window, 'load', handler);
getCookie(name)
读取cookie
setCookie(name, value, options={})
创建cookie
// 一天后过期
common.setCookie('name', 'value', {
maxAge: 60 * 60 * 24,
});
delCookie(name)
删除cookie
getWinHeight()
获取窗口可视区的高度
getWinWidth()
获取窗口可视区的宽度
getWinScrollHeight()
获取窗口可视区内容的总高度
getWinScrollWidth()
获取窗口可视区内容的总宽度
getWinScrollTop()
获取窗口可视区滚动条垂直偏移
getWinScrollLeft()
获取窗口可视区滚动条水平偏移
getElementOffset(element)
获取元素相对于窗口可视区的位置
selectText(textNode, start=0, length)
选中文本
<input type="text" value="12元" />
// 鼠标停留在’元‘前面
common.selectText(document.querySelector('input'), 2, 0);
// 选中所有
common.selectText(document.querySelector('input'));
getStyle(element, name)
获取元素样式
crypt
加密解密【用于暴露在url中的重要参数】
import { crypt } from 'jun-utils';
encode(value)
加密
crypt.encode('123456'); // CJ8pD3Ks
decode(value)
解密
crypt.decode('CJ8pD3Ks'); // 123456
ws
webSocket【断线重连】
import { ws } from 'jun-utils';
ws(url, options)
Property | Description | Type | Default |
---|---|---|---|
url | 服务器网址 | string | - |
options | 配置参数 | object | {} |
options.timeout | 重连频率【毫秒】 | number | 3000 |
options.limitConnect | 断线重连次数 | number | 3 |
options.onopen | 连接建立回调 | function(ws) | - |
options.onclose | 连接关闭回调 | function | - |
options.onmessage | 接收数据回调 | function(data) | - |
options.reconnect | 重连回调 | function(ws) | - |
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago