npm install --save-dev chcutils
ES6导入
import * as ChcUtils from 'chcutils';
var mathutil = new ChcUtils.MathUtil();
var dis = mathutil.getDistance({x: 10, y: 10}, {x: 100, y: 100});
console.log(dis);
<script src="*/ChcUtils.min.js"></script>
var mathutil = new ChcUtils.MathUtil();
var dis = mathutil.getDistance({x: 10, y: 10}, {x: 100, y: 100});
console.log(dis);
MathUtil
StringUtil
ArrayUtil
FormUtil
OsUtil
ObjUtil
DomUtil
- isNumber(__obj)
- 判断是否是数字,是返回true,否返回false
- @param {string/Number...} [__obj] 要被判断的对象
- @returns {Boolean} 是数字就返回true,不是数字就返回false
- getCirclePosition(__angle, __radius, __center)
- 计算圆上一点的坐标,可做成画圆效果
- @param {number} [__angle] 要获取位置的角度
- @param {object} [__radius] 要获取位置的圆的半径,{x:xx,y:yy},两个值不一样的时候就是画椭圆
- @param {object} [__center] 要获取位置的圆的中心点,默认为{x:0,y:0}
- @returns {object} 生成的坐标
- getDistance(p1, p2)
- 计算两点间距离
- @param {object} [p1] 点1
- @param {object} [p2] 点2
- getOnLineXY(p1, p2, _x, _y)
- 计算两点间直线任意点的坐标,p1 p2为直线的两个端点,_x和_y为要求的坐标点中的一个坐标,求另一个
- @param {object} [p1] 点1
- @param {object} [p2] 点2
- @param {number} [_x] 要求的点的x坐标,求x坐标的话,该参数填null
- @param {number} [_y] 要求的点的y坐标,求x坐标的话,该参数填null
- getOnLineCenter(p1, p2)
- 计算两点间直线中心点坐标
- @param {object} [p1] 点1
- @param {object} [p2] 点2
- getAngle(start, end)
- 返回起点到终点的角度,以Y轴为中心,从上右下左是0,90,180,270,360
- @param {object} [start] 起点
- @param {object} [end] 终点
- cutStr(value)
- 每隔三位数加一个逗号
- @param {string/number} [value] 要转换的值
- getEllipseRandomPoint(radiusX, radiusY)
- 获取椭圆内随机一点
- @param {number} radiusX 椭圆X轴半径
- @param {number} radiusY 椭圆Y轴半径
- @param {object} 随机点
- gcd(num1, num2)
- 求两个数的最大公约数
- lcm(num1, num2)
- 求两个数的最小公倍数
- getPro(__arr)
- 根据数组里的概率元素,生成新的概率数组
- @例:var a=[0.5,0.1,0.2,0.2]; 就是50%个0,10%个1,20%个2,20%个3,生成的数组就是[0,0,0,0,0,1,2,2,3,3]
- 注:数组元素的和不要大于1,做概率相关的程序时可以用到它
- 因为用到了最小公倍数函数,所以就把它放到数学类里了,而没放到数组类里
- randomInteger(low, high, __zero)
- 范围内随机取整,__zero:是否排除0,true是排除,false是不排除,默认为false
- randomFloat(low, high, __zero)
- 范围内随机取小数
- getFloat(number, n)
- 数字四舍五入(保留n位小数)
- @param {number} [number] 要四舍五入的数字
- @param {number} [n] 保留的位数
- getNumToArray(number)
- 将数字转成数组
- getData(str)
- 获取想要的时间
- @param {string} str s1一秒 h1一小时 d1一天
- @return {number} 当前时间+str的时间
- 例:getData('d2'); //返回当前日期后的两天,比如当前是14号,它返回的就是16号
- getMoneyCapital(n)
- 获取金额中文大写
- @param {number} [n] 金额数字
- 例:getMoneyCapital(1682); //"人民币壹仟陆佰捌拾贰元整"
- 例:getMoneyCapital(-1693); //"欠人民币壹仟陆佰玖拾叁元整"
- trim(str, type)
- 去除空格
- @param str [string] 要处理的字符串
- @param type [number] 怎么处理,1-所有空格 2-前后空格 3-前空格 4-后空格
- @returns {string}
- isEmpty(str)
- 判断是否为空字符
- @param str [string] 要判断的字符串
- @returns {boolean} 返回true是空的,false是非空的
- insert_flg(str, flg, sn)
- 在指定地方插入字符
- @param str [string] 要处理的字符串
- @param flg [string] 要插入的字符串
- @param sn [number] 要插入的位置
- @returns {string}
- 例:
var aa = 'abcd'; stringUtil.insert_flg(aa, '123', 2); //ab123cd
- del_flg(str, sn, len)
- 删除指定地方的字符
- @param str [string] 要处理的字符串
- @param sn [number] 要删除的位置,从1开始
- @param len [number] 删除字符串的长度,默认为1
- @returns {string}
- randomString(len)
- 随机A-Z|a-z|0-9 中的随机组合
- @param randomLen {Boolean} 是否随机产生
- @param min {number} 最小长度
- @param max {number} 最大长度
- @returns {string}
- strReplace(str, a, b, mm)
- 将字符串中的指定字符替换成另一个字符
- @param str [string] 要处理的字符串
- @param a [string] 要替换的字符串
- @param b [string] 要替换成的字符串
- @param mm [string] 匹配模式:g-全局匹配 i-区分大小写 m-多行匹配
- @returns {string}
- changeCase(str, type)
- 字母大小写转换
- @param str [string] 要处理的字符串
- @param type [number] 转换类型: 1-首字母大写 2-首字母小写 3-大小写转换 4-全部大写 5-全部小写
- @returns {*}
- encryptStr(str, regArr, type, ARepText)
- 字符替换*
- @param str [string] 要处理的字符串
- @param regArr [array] 字符格式,例:[3,5,3] 生成的字符就是12345
- @param type [number] 替换方式 0-替换中间N个或前面N个字符 1-替换两边N个或后面N个字符
- @param ARepText [string] 替换的字符,默认是*
- @returns {string}
- longestWord(str, splitType)
- 找出最长单词
- @param str [string] 要处理的字符串
- @param splitType [string] 单词之间的间隔符号,可不填
- @returns {{el: string, max: number}} el-最长的单词 max-最长单词的长度
- 例:
longestWord('Find the Longest word in a String'); {el:'Longest',max:7} longestWord('Find|the|Longest|word|in|a|String','|'); {el:'Longest',max:7}
- titleCaseUp(str, splitType)
- 句中单词首字母大写
- @param str [string] 要处理的字符串
- @param splitType [string] 单词之间的间隔符号,可不填
- @returns {string}
- formatNumber(n)
- 给数字前面加0
- @param n [number] 要处理的数字,如果小于10,则前面加0
- @param __num [number] 在第几位补0,2:是十位,3:是百位
- @returns {string}
- formatDate(fmt,date)
- 获取格式化的日期
- @param fmt [string] 格式规范,如 "yyyy-MM-dd hh:mm"
- @param date [date] 要处理的日期
- @returns {string}
- 例:
var mydate = new Date(); var str = stringUtil.formatDate("yyyy-MM-dd hh:mm",mydate); 2018/12/14 17:45
- stringToDate(str, yy, tt)
- 格式化的日期字符串转日期型数据,如"yyyy-MM-dd hh:mm"
- @param str [string] 格式化的日期字符
- @param yy [string] 年月日的分隔符,默认是"-"
- @param tt [string] 时分秒的分隔符,默认是":"
- @returns {date}
- 例:
var _date = stringToDate("2019-04-01 6:05:10"); Mon Apr 01 2019 06:05:10 GMT+0800 (中国标准时间) var _date = stringToDate("2019/04/01 7","/"); Mon Apr 01 2019 07:00:00 GMT+0800 (中国标准时间)
- getTimeDis(thisTime, targetTime, __showDay, __hours_num, __day_num)
- 返回两个时间点的时间差
- @param thisTime [string] 当前日期 格式:2019-04-01 00:00:00
- @param targetTime [string] 目标日期 格式:2019-04-01 00:00:00
- @param __showDay [boolean] 是否显示天数 默认false
- @param __hours_num [number] 小时部分显示几位数
- @param __day_num [number] 天数部分显示几位数
- @returns {string}
- 例:
var test = stringUtil.getTimeDis("2019-04-01 04:00:50", "2019-04-05 04:01:00",true,3,3); console.log('disTime:' + test); //disTime:004:00:00:010
- isContainStr(_str1, _str2)
- @param _str1 [string] 源字符串
- @param _str2 [string] 被寻找的字符串
- @returns {Boolean}
- 例:
var a='abcde'; var b='cde'; var c='cdh'; console.log(stringUtil.isContainStr(a,b)); //true console.log(stringUtil.isContainStr(b,c)); //false
- utf16toEntities(str)
- 带表情的字符串转码,转码后就可以无障碍的存入数据库了
- @param str [string] 源字符串
- @returns {String}
- entitiestoUtf16(str)
- 带表情的字符串解码,从数据库取出字符串后解码后就可以正常显示的前端了
- @param str [string] 源字符串
- @returns {String}
- beautySub(str, len)
- 字符串超出多少之后加省略号,包含汉字
- @param str [string] 源字符串
- @param len [int] 需要显示多少个汉字,两个英文字母相当于一个汉字。
- @returns {String}
- stringFlag(str, flag, classname)
- 在字符串中找到指定字符串,并给它加上指定的样式
- @param str [string] 源字符串
- @param flag [string] 要标记的字符串
- @param classname [string] 要加的样式
- @returns {String}
- shuffle(__arr)
- 洗牌算法 打乱数组
- @param __arr [array] 要处理的数组
- @returns [array] 打乱的数组
- clone(__arr)
- 克隆出一个独立的数组
- @param __arr [array] 要处理的数组
- @returns [array] 生成的新数组
- getExt(__arr, __num)
- 随机抓取N个元素生成新数组,如果__num为0或不填,则返回原数组
- @param __arr [array] 要处理的数组
- @param __num [number] 抓取多少元素
- @returns [array] 生成的新数组
- getNumArr(__num)
- 把传过来的数字从0开始转成数组,如:100,数组就是[0,1,2,...,99];
- @param __num [number] 要处理的数
- @returns [array] 生成的新数组
- removeRepeatArray(arr)
- 数组去重
- @param arr [array] 要处理的数组
- @returns {any[]} 返回新数组
- maxArr(arr)
- 数组最大值
- @param arr [array] 要处理的数组
- @returns {number} 返回数组最大值
- minArr(arr)
- 数组最小值
- @param arr [array] 要处理的数组
- @returns {number} 返回数组最小值
- sumArr(arr)
- 数组求和
- @param arr
- @returns {*}
- covArr(arr)
- 数组求平均值
- @param arr
- @returns {number}
- getEleCount(obj, ele)
- 返回数组或字符串里一个元素出现的次数
- @param obj [string | array] 要处理的字符串或数组
- @param ele 指定的元素
- @returns {number}
- getCount(arr, rank, ranktype)
- 返回数组中出现最多的几次元素和出现次数
- @param arr [array] 要处理的数组
- @param rank [number] 长度,默认为数组长度
- @param ranktype [number] 新生成数组的排序方式,默认降序 1-升序 非1-降序
- @returns {array} 返回的数组元素为object:{el:元素,count:出现次数}
- 例:
getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2]) result:[{"el":"2","count":6},{"el":"1","count":4},{"el":"3","count":2},{"el":"4","count":1},{"el":"5","count":1},{"el":"6","count":1}] 默认情况,返回所有元素出现的次数 getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],3) 传参(rank=3),只返回出现次数排序前三的 result:[{"el":"2","count":6},{"el":"1","count":4},{"el":"3","count":2}] getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],null,1) 传参(ranktype=1,rank=null),升序返回所有元素出现次数 result:[{"el":"6","count":1},{"el":"5","count":1},{"el":"4","count":1},{"el":"3","count":2},{"el":"1","count":4},{"el":"2","count":6}] getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],3,1) 传参(rank=3,ranktype=1),只返回出现次数排序(升序)前三的 result:[{"el":"6","count":1},{"el":"5","count":1},{"el":"4","count":1}]
- getArrayNum(arr, n1, n2)
- 生成n1到n2的数组
- @param arr [array] 要处理的数组
- @param n1 要获取的起点元素
- @param n2 要获取的终点元素
- @returns [array]
- 例:
getArrayNum([0,1,2,3,4,5,6,7,8,9],5,9) result:[5, 6, 7, 8, 9] getArrayNum([0,1,2,3,4,5,6,7,8,9],2) 不传第二个参数,默认返回从n1到数组结束的元素 result:[2, 3, 4, 5, 6, 7, 8, 9]
- delArr(arr, obj, type)
- 删除数组中指定的对象
- @param arr [array] 要处理的数组
- @param obj [string | number | object] 要删除的对象
- @param type [number] 删除方式:0-所有 1-第一个 2-最后一个,默认0
- @returns [array]
- changeBetween(__arr, __index1, __index2)
- 交换数组中两个元素的位置
- @param __arr [array] 要处理的数组
- @param __index1 要交换的元素1号的索引号
- @param __index2 要交换的元素2号的索引号
- @returns [array]
- changeFirst(__arr, __index)
- 将某一个数组元素移到第一个
- @param __arr [array] 要处理的数组
- @param __index 提到第一个的元素的索引号
- @returns [array]
- changeLast(__arr, __index)
- 将某一个数组元素移到最后一个
- @param __arr [array] 要处理的数组
- @param __index 提到最后一个的元素的索引号
- @returns [array]
- delEmpty(__arr)
- 删除数组中的空值
- @param __arr [array] 要处理的数组
- @returns [array]
- inputEmpty(str)
- 判断输入框的内容是不是空的
- @param str [string] 要判断的字符
- @returns {boolean} 返回是否为空,如果是空的返回false,如果不是空的返回true
- isPhone(str)
- 判断是否为手机号码
- @param str [string] 手机号字符串
- @returns {boolean} 返回true是手机号,false不是手机号,忽略前后空格
- isEmail(str)
- 判断是否为email
- @param str [string] 要处理的字符串
- @returns {boolean} 返回true是邮箱,false不是邮箱,忽略前后空格
- isID(str)
- 判断身份证号
- @param str [string] 身份证号
- @returns {boolean} 返回true是身份证号,false不是身份证号,忽略前后空格
- judgeForm(__arr)
- 判断表单必要项是否完整
- @param __arr [array] 表单项数组,每个数组元素是一个object
- object的内容:{value:string,type:1}
-
value [string]:要判断的值
-
type [nubmer]:判断类型, 1-判断字符串是否为空 2-判断手机号 3-判断邮箱 4-判断身份证号
- return [array] 返回一个数组,数组元素与源数组一样,多了一个属性judge,为true时是通过,为false时是有问题
- inputHandler()
- 解决IOS端软键盘将页面顶起的bug
- pcQRCode(__url, __tip)
- 判断是否是pc端,并且在pc端显示二维码提示移动端扫码观看
- @param __url [string] 要转成二维码的地址,如果没有就取当前页面地址
- @param __tip [string] 提示文字
- @param __options [object] 提示页面的样式和结构,style:样式,wrapper:html代码
- isPc()
- 判断是否是pc端
- @returns {boolean}
- getSysInfo()
- 获取终端设备信息
- return {object} 返回一个对象,对象属性是设备的类型
- setCookie(c_name, value, expiredays)
- 存储cookie
- @param c_name [string] 存储的名称
- @param value [string] 存储的值
- @param expiredays [number] 存储的时限(天)
- getCookie(name)
- 获取cookie存储的数据
- @param name [string] 存储的名称
- @returns {*} 有值的话返回值,没值的话返回null
- delCookie(name)
- 删除cookie
- @param name [string] 要删除的cookie名称
- getQueryString(name,encode)
- 获取URL中的参数
- @param name [string] 参数名称
- @param encode [boolean] 是否转码,true为转码,解决中文乱码问题,接收后用decodeURI解码
- @returns {*}
- preventTouch(class)
- 阻止移动端下拉滑动的效果,并排除指定类,指定的类scroll效果保留
- @param class [string] 指定排除的类名,默认为'myScroller'
- isAn(class)
- 判断是否是安卓系统
- cloneObj(__obj)
- 深复制对象
- @param {Object} [__obj] 要被复制的对象
- @returns {Object} 返回复制出来的新对象
- scrollBottom(__target)
- 判断div滚动条是否达到底部
- @param __target [$dom] 靠jq获取的对象dom节点,要检测这个节点是滚动条,如$('.aa')
- @returns {boolean} 返回true是滚动到底部了,false没滚到底部
- inputKeyboard()
- 键盘顶起bug解决