# c-tools-js **Repository Path**: ChaoXxxx_admin/c-tools-js ## Basic Information - **Project Name**: c-tools-js - **Description**: js 前端工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-15 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## assets ### 苹方字体 #### c-tools-js/assets/font/apple ### scss #### c-tools-js/assets/scss/comm.scss 公共样式 #### c-tools-js/assets/scss/phone.scss 手机样式 ### css #### c-tools-js/assets/css/comm.css 公共样式 #### c-tools-js/assets/css/phone.css 手机样式 --- ### echarts #### chinajs 中国地图 解决文字重叠问题 ``` import Vue from 'vue' import * as echarts from 'echarts' import 'c-tools-js/assets/echarts/map-chinajs' Vue.prototype.$echarts = echarts ``` --- ## Color ``` /** * rgb 转 hex * @param {String} rgb 颜色 rgb(255,255,255) * @return hex */ RgbToHex /** * hex 转 rgb 例如:'#23ff45' * @param {String} hex 颜色 * @param {Boolean} str 是否字符串, true为数组 * @return string */ HexToRgb /** * 生成随机十六进制颜色 * @return hex */ RandomHex /** * 生成随机RGB颜色 * @return string */ RandomRGB /** * 求两个颜色之间的渐变值 * @param {string} startColor 开始的颜色 * @param {string} endColor 结束的颜色 * @param {number} step 颜色等分的份额 * */ ColorGradient /** * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串 * @param {String} color 十六进制的色值 * @param {Number} alpha rgba的透明度,默认0.3 */ ColorToRgba ``` --- ## Cookie ``` /** * 获取cookie * @param {String} name cookie名 */ GetCookie /** * 清除全部Cookie */ ClearCookies ``` --- ## Date ``` /** * 查找日期位于一年中的第几天 * @param {Date} date new Date() * dayOfYear(new Date()) * Result: 272 */ DayOfYear ``` --- ## Is ``` /** * 是否IE */ IsIE /** * 是否Edge */ IsEdge /** * 是否火狐 */ IsFirefox /** * 对象是否相等 * @param {Object} a * @param {Object} b * @returns {Boolean} */ ObjectEquals /** * 数组是否相等 * @param {Array} arrayA * @param {Array} arrayB * @returns {Boolean} */ ArrayEquals /** * 数组/对象 是否相等 * @param {Array | Object} value1 * @param {Array | Object} value2 * @returns {Boolean} */ IsEqual /** * 是否为空 * @param {String} val * @returns {Boolean} */ isEmpty ``` --- ## Number ``` /** * Comma用于分割数字,默认为3位分割,一般用于格式化金额 * @param {Number} source 数字 * @param {Int} length 分割位, 默认为3位 * Comma(21342132) // 21,342,132 * Comma(21342132, 4) // 2134,2132 * Comma(21342132.234) // 21,342,132.234 */ Comma /** * Pad用于按照位数补0 * @param {Number} source 数字 * @param {Int} length 补充位, 默认为2位 * Pad(1) // 01 * Pad(234, 4) // 0234 */ Pad /** * Random用于生成两个整数范围内的随机整数 * @param {Int} min 最小 * @param {Int} max 最大 */ Random ``` --- ## Object ``` /** * 检查是否对象数组 * @param {Array|Object} data * @return Boolean */ IsArrayObject /** * 检查是否对象 * @param {Array|Object} data * @return Boolean */ IsObject /** * 检查是否函数 * @param {Array|Object} data * @return Boolean */ IsFunction /** * 检查是否数组 * @param {Array|Object} data * @return Boolean */ IsArray /** * 检查是否字符串 * @param {Array|Object} data * @return Boolean */ IsString /** * 拷贝 * @param {Array | Object} obj * @returns obj */ Clone /** * 使用递归的方式实现数组、对象的深拷贝 * @param {Array | Object} obj * @returns obj */ DeepClone /** * JS对象深度合并 * @param {Object} target 当前对象 * @param {Object} source 合并对象 * @returns obj */ DeepMerge /** * 删除空的参数(常用于post请求) * @param {*} obj * @return obj */ DeleteNullObj ``` --- ## Random ``` /** * 打乱数组 * @param {Array} arr 数组 * shuffleArray([1, 2, 3, 4]) * Result: [ 1, 4, 3, 2 ] */ ShuffleArray ``` --- ## RegExp ``` /** * 验证手机号码 * @param {Number, String} str */ RegExpChinaMobile /** * 火车车次 * @param {Number, String} str * 例如: G1868, D102, D9, Z5, Z24, Z17 */ RegExpTrainNumber /** * 身份证号, 支持1/2代(15位/18位数字) * 例如: 622223199912051311, 12345619991205131x, 123456991010193 */ RegExpIDCard /** * 香港身份证 * @param {Number, String} str * 例如: K034169(1) */ RegExpHKIDCard /** * 澳门身份证 * 例如: 5686611(1) */ RegExpMacaoIDCard /** * 台湾身份证 * 例如: U193683453 */ RegExpTaiwanIDCard /** * 护照(包含香港、澳门) * 例如: s28233515, 141234567, 159203084, MA1234567, K25345719 */ RegExpPassport /** * 邮政编码(中国) * 例如: 734500, 100101 */ RegExpPostalCode /** * 密码强度校验,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符 * 例如: Kd@curry666 */ RegExpPassword /** * 用户名校验,4到16位(字母,数字,下划线,减号) * 例如: xiaohua_qq */ RegExpUserName /** * 必须带端口号的网址(或ip) * 例如: https://www.qq.com:8080, 127.0.0.1:5050, baidu.com:8001, http://192.168.1.1:9090 , 反例: 192.168.1.1, https://www.jd.com */ RegExpAddressOrIp /** * 网址(url,支持端口和"?+参数"和"#+参数) * 例如: www.qq.com, https://baidu.com, 360.com:8080/vue/#/a=1&b=2 */ RegExpAddress /** * 统一社会信用代码 * 例如: 91230184MA1BUFLT44, 92371000MA3MXH0E3W */ RegExpSocialCredit /** * 视频(video)链接地址 * 例如: http://www.abc.com/video/wc.avi * 格式:swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4 */ RegExpVideo /** * 图片(image)链接地址 * 例如: https://www.abc.com/logo.png * 格式:gif|png|jpg|jpeg|webp|svg|psd|bmp|tif */ RegExpImage /** * 数字/货币金额(支持负数、千分位分隔符) * 例如: 100, -0.99, 3, 234.32, -1, 900, 235.09, 12,345,678.90 */ RegExpCurrency /** * 邮箱 * 例如: 90203918@qq.com, nbilly@126.com, 汉字@qq.com */ RegExpEmail /** * ip-v4[:端口] * 例如: 172.16.0.0, 172.16.0.0:8080, 127.0.0.0, 127.0.0.0:998 */ RegExpIPv4 /** * ip-v6[:端口] * 例如: 2031:0000:130f:0000:0000:09c0:876a:130b, [2031:0000:130f:0000:0000:09c0:876a:130b]:8080 */ RegExpIPv6 ``` --- ## String ``` /** * 英文字符串首字母大写 * @param {String} str 英文字符串 * @return str */ Capitalize /** * 去除空格 * @param {String} string 字符串 * @param {String} pos 可选(both:两端, left:左端, right:右端, all:全部) * @return str */ Trim /** * json对象转url参数: {aaa: 1} => a=1 * @param {*} obj 转化对象 * @param {*} encode 是否需要encode * @return str */ Query2String /** * url参数转json对象: a=1 => {aaa: 1} * @param {*} str 转化字符串 * @param {*} decode 是否需要decode * @return obj */ String2Query /** * 以json的格式获取当前url上的参: * http://www.taobao.com?a=1 => {a: 1} * @return obj */ GetLocationQuery /** * 本算法来源于简书开源代码,详见:https://www.jianshu.com/p/fdbf293d0a85 * 全局唯一标识符(uuid,Globally Unique Identifier),也称作 uuid(Universally Unique IDentifier) * 一般用于多个组件之间,给它一个唯一的标识符,或者v-for循环的时候,如果使用数组的index可能会导致更新列表出现问题 * 最可能的情况是左滑删除item或者对某条信息流"不喜欢"并去掉它的时候,会导致组件内的数据可能出现错乱 * v-for的时候,推荐使用后端返回的id而不是循环的index * @param {Number} len uuid的长度 * @param {Boolean} firstU 将返回的首字母置为"u" * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制 */ Guid ``` --- ## Timer ``` /** * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数 * @param {Function} func 要执行的回调函数 * @param {Number} wait 延时的时间 * @param {Boolean} immediate 是否立即执行 * @return null */ Debounce /** * 节流原理:在一定时间内,只能触发一次 * @param {Function} func 要执行的回调函数 * @param {Number} wait 延时的时间 * @param {Boolean} immediate 是否立即执行 * @return null */ Throttle ``` --- ## Tree ``` /** * 递归 -> children 数组小于1 设置为 undefined * @param {Array} data 递归数组 * @param {String} children 递归字段键 * @returns data */ SetTreeChildrenBlankToUndefined /** * 递归修改键 * @param {Array} data 递归数组 * @param {Array} changeKey 递归修改名 [{ from: val, to: val }, { from: val, to: val }] * @param {Array} children 递归数组名 * @returns data */ ChangeTreeDataName /** * 递归排序 * @param {Array} data 递归数组 * @param {String} children 递归字段键 * @param {String} sort 排序字段键 * @returns data */ SortTreeData /** * 根据子级id递归寻找所有父级 * @param {array} list 寻找数组 * @param {id} id id * @param {string} checkId 递归id字段名 默认id * @param {string} checkChildren 递归children字段名 默认children */ FindTreeParentId /** * 根据数组遍历所有id * @param {array} list 寻找数组 * @param {string} checkId 需要遍历的字段 * @param {string} checkChildren 需要遍历的children键 */ FindTreeAllId ```