UNPKG

js-methods-library

Version:

javascript 实用函数库

333 lines (330 loc) 13.1 kB
# js-methods-library.js ## Getting Started ### install npm install js-methods-library ### using #### useing `vue-cli` import Tools from 'js-methods-library' Vue.use(Tools) this.***() #### useing `other` <script src="js-methods-library/tools.js"></script> <script> Tools.***() </script> ## Library && Example ### 浏览器地址栏解析 *** #### 获取当前地址栏参数,防止 xss 攻击 >地址栏地址:"http://www.xxx.com/index.html?param1=aaa"; > @example this.getQueryString('param1') > @param argument[0] {String} - 参数名 > @returns {String} - 参数值 *** #### 获取字符串参数,防止 xss 攻击 >地址栏地址:"http://www.xxx.com/index.html?param1=aaa"; > @example this.getQueryString("http://www.xxx.com/index.html?param1=aaa",'param1') > @param argument[0] {String} - url地址 > @param argument[1] {String} - 参数名 > @returns {String} - 参数值 *** #### 获取地址栏#后面的值 >地址栏地址:"http://www.123.com/index.html#bbb"; > @example this.getRequestString() > @param 无须参数 > @returns {String} - 参数值 - bbb *** #### 获取 url 的 htm 页面名称 >地址栏地址:"http://www.123.com/index.html"; > @example this.getUrlHtml(1) > @param argument[0] {number} - 获取类型; > 1,只获取页面名称,不带 suffix 后缀; > 2,取页面名称,同时带 suffix 后缀; > 3,获取 suffix 父级路径与 suffix 名称,同时带 suffix 后缀; > 4,获取 suffix 父级路径与 suffix 名称,不带 suffix 后缀; > undefined,type 没有值,什么也不传,获取 suffix 父级路径与当前 suffix 页面名称,不带 suffix 后缀 > @param argument[1] {String} - 页面后缀,默认值'html' > @returns {String} - 参数值 *** #### 编码地址 >@example this.linkEncodeURI(url) > @param argument[0] {String} - 页面地址 > @returns {String} - 编码后的页面地址 *** #### 解码地址 >@example this.linkDecodeURI(url) > @param argument[0] {String} - 页面地址 > @returns {String} - 解码后的页面地址 *** ### 浏览器跳转 #### 页面跳转 >@example this.forward(url) > this.forward('http://www.xxx.com/index.html', {a:1,b:2}); > this.forward('http://www.xxx.com/index.html', {a:1,b:2}, parent.location); > @param argument[0] {String} - 跳转地址(必传) > @param argument[1] {Object} - 附带参数(非必传) > @param argument[2] {Object} - 跳转形式(非必传) - 当前页面(location)或者(parent.location) *** #### 打开窗口 >@example this.openWindow(url) > this.openWindow('http://www.xxx.com/index.html', {a:1,b:2}); > this.openWindow('http://www.xxx.com/index.html', {a:1,b:2}, ); > @param argument[0] {String} - 跳转地址(必传) > @param argument[1] {Object} - 附带参数(非必传) > @param argument[2] {String} - 窗口打开位置(非必传) *** ### 日期时间操作 #### 日期格式化(日期对象) > > @example this.formatDate('2020/12/12 10:10:30','yyyy-MM-dd HH'); > 2020-12-12 10 > @param argument[0] {String} date - 日期对象 > @param argument[1] {String} [fmt='yyyy-MM-dd'] - 格式化格式 > @returns {String} - 格式化后日期 *** #### 日期格式化(yyyy-MM-dd HH:mm:ss 格式的日期) > @example this.getFormatDate('2020-12-12 10:10:30','yyyy-MM-dd HH'); > 2020-12-12 10 > @param argument[0] {String} date - 日期对象 > @param argument[1] {String} [fmt='yyyy-MM-dd'] - 格式化格式 > @returns {String} - 格式化后日期 *** #### 获取当前日期并格式化 > @example this.getFormatDateNow(); > 2020-12-12 > @param argument[0] 无参数 > @returns {String} - 格式化后日期 *** #### 比较当前时间与指定时间相差几个月 > @example this.checkFormatDateToFuture('2020-12-12',3); > @param argument[0] {String} date - 日期对象 > @param argument[1] {String} - 相差月数 > @returns {Boolean} - true为小于num个月,false为大于num个月 *** #### 生成唯一ID,时间戳加随机数 > @example this.uid(); > @param argument[0] 无参数 > @returns {number} - 唯一ID *** ### 字符串、数组操作 #### 判断是否为空 > @example this.isEmpty(‘’); > 判断undefined、null、"" > @param argument[0] {String} obj - 参数名称 > @returns {Boolean} - 参数值 *** #### 判断对象是否为空 > @example this.isObjEmpty(obj); > 判断对象是否不含任何属性 > @param argument[0] {Obj} obj - 参数名称 > @returns {Boolean} - 参数值 *** #### 判断是否是json字符串 > @example this.isJsonString("{a1:1}"); > true > @param argument[0] {String} - 字符串 > @returns {Boolean} - 参数值 *** #### 当两个对象有相同的key时,快速赋值 > @example this.objToValueObj("{a:1,b:2,d:5}","{a:2,b:3,c:4}"); > obj1: {a:2,b:3,d:5} > @param argument[0] {Object} obj1 - 被赋值对象 > @param argument[1] {Object} obj2 - 赋值对象 *** #### 将字符串拆分成数组 > @example this.split('1,2,3',','); > [1,2,3,4] > @param argument[0] {String} str - 字符串 > @param argument[1] {String} [separator=','] - 分隔符(非必传) > @returns {Array} - 数组 *** #### 将数组拼装成字符串 > @example this.join([{k1:'1','k2:'张三'},{k1:'2','k2:'李四'},{k1:'3','k2:'王五'}],',','k2'); > '张三,李四,王五' > this.join([{k1:'1','k2:'张三'},{k1:'2','k2:'李四'},{k1:'3','k2:'王五'}],',','k1'); > '1,2,3' > this.join(["1","2","3"]) > '1,2,3' > @param argument[0] {Array} - 数组 > @param {String} key - 作为分隔的 key,当分隔key存在时,separator必传 > @param argument[1] {String} [separator=','] - 分隔符(非必传) > @returns {String} - 字符串 *** #### 字符串模糊匹配 > @example this.stringMatching("1,2,3,4", "2"); > true > @param argument[0] {String} string - 字符串 > @param argument[1] {String} keyWord - 关键词 > @returns {Boolean} - 参数值 *** #### 将数组中某些元素重组成新的数组 > @example this.joinKey([{k1:'1','k2:'张三'},{k1:'2','k2:'李四'},{k1:'3','k2:'王五'}], 'k2'); > ['张三', '李四', '王五'] > @param argument[0] {Array} Array - 数组 > @param argument[1] {String} key - 关键词 > @returns {Array} - 新的数组 *** #### 数组深拷贝 > @example this.copyToDeep([{k1:'1','k2:'张三'},{k1:'2','k2:'李四'},{k1:'3','k2:'王五'}]); > @param argument[0] {Array} Array - 数组 > @returns {Array} - 结果数组 *** #### 两数组取交集 > @example this.getArrayMixed([1,2,3], [2,3,4]); > [2,3] > @param argument[0] {Array} Array - 数组 > @param argument[1] {Array} Array - 数组 > @returns {Array} - 结果数组 *** #### 利用 map 进行数组去重 > @example this.arrayDeDuplication(arr); > let arr = [1, 0, 8, 3, -9, 1, 0, -9, 7]; > 1, 0, 8, 3, -9, 7 > @param argument[0] {Array} Array - 数组 > @returns {Array} - 结果数组 *** #### 取出数组中,某个属性相同的项组成新的集合 > @example > arr = [{a:1,b:2,c:3},{a:1,b:3,c:4},{a:2,b:4,c:6}] > this.getArrayMajority(arr, 'a', 1); > [{a:1,b:2,c:3},{a:1,b:3,c:4},] > @param argument[0] {Array} Array - 数组 > @param argument[1] {String} key - 属性名 > @param argument[2] {String} value - 属性值 > @returns {Array} - 结果数组 *** #### 替换指定位置的字符串 > @example this.setCharAt(str, index, chr); > @param argument[0] {String} str - 源字符串 > @param argument[1] {String} index - 索引 > @param argument[2] {String} chr - 替换字符 > @returns {string} - 替换后的字符串 *** #### 回文字符串判断 > @example this.isPlalindrome('ababbaba'); > true > @param argument[0] {String} str - 源字符串 > @returns {Boolean} - 参数值 *** ### 文件上传与转码 #### 获取图片路径方法 > @example this.getObjectURL(file); > @param argument[0] {Object} file - 图片文件对象 > @returns {string} - 图片文件路径 *** #### 获取formData对象 > @example this.getFormData('formName字符串'); > @param argument[0] {string} [form] - form选择器 > @returns {Object} - formData对象 *** #### base64转换blob > @example this.convertBlob('base64字符串'); > @param argument[0] {string} base64 - base64 > @returns {Object} - Blob *** #### 获取文件后缀名大小(KB) > @example this.fileSize(2048); > @param argument[0] {number} size - 文件大小(BIT) > @returns {number} - size *** #### 获取文件后缀名 > @example this.fileSuffix(‘a.png’); > @param argument[0] {string} fileName - 文件名称 > @returns {string} - 文件后缀名 *** #### 获取文件类型 > @example this.fileSuffixType(‘.png’); > @param argument[0] {string} fileSuffix - 文件后缀名 > @returns {string} - 文件类型 *** #### 获取文件类型(根据文件名称) > @example this.fileType(‘a.png’); > @param argument[0] {string} fileName - 文件名称 > @returns {string} - 文件类型 *** ### 本地存储 #### 设置 localStorage > @example this.setLocal("myLocal","myLocalVal"); > @param argument[0] {string} name - 名称 > @param argument[1] {object} content - 值 > @returns *** #### 获取 localStorage > @example this.getLocal("myLocal"); > @param argument[0] {string} name - 名称 > @returns {object} content - 值 *** #### 删除 localStorage > @example this.removeLocal("myLocal"); > @param argument[0] {string} name - 名称 > @returns *** #### 设置 sessionStorage > @example this.setSession("mySession","mySessionVal"); > @param argument[0] {string} name - 名称 > @param argument[1] {object} content - 值 > @returns *** #### 获取 sessionStorage > @example this.getSession("mySession"); > @param argument[0] {string} name - 名称 > @returns {object} content - 值 *** #### 删除 sessionStorage > @example this.removeSession("mySession"); > @param argument[0] {string} name - 名称 > @returns *** ### 判断浏览器环境 ### 数据结构转换 #### json格式转树状结构(最大支持三级) > @example this.transData(data,'id','pid','children'); > var data = [{id:1,pid:''},{id:1,pid:''},{id:1,pid:''},{id:11,pid:1},{id:12,pid:1},{id:2,pid:''},{id:21,pid:2}]; > {"treeDatas":[{"id":1,"pid":"","level":1},{"id":1,"pid":"","children":[{"id":12,"pid":1,"level":2},{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2}],"level":1},{"id":2,"pid":"","children":[{"id":21,"pid":2,"level":2},{"id":21,"pid":2,"level":2}],"level":1}],"treeList":[{"id":1,"pid":"","level":1},{"id":1,"pid":"","level":1},{"id":1,"pid":"","children":[{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2},{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2}],"level":1},{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2},{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2},{"id":2,"pid":"","children":[{"id":21,"pid":2,"level":2},{"id":21,"pid":2,"level":2}],"level":1},{"id":21,"pid":2,"level":2},{"id":21,"pid":2,"level":2}]} > @param argument[0] {Object} data - json数据 > @param argument[1] {object} idStr - id的字符串 > @param argument[2] {object} pidStr - 父id的字符串 > @param argument[3] {object} childrenStr - children的字符串 > @returns {Object} 树形数据 *** #### 修改数组对象的key > @example this.modifyArrayFeild(Arrydata, keymap); > var Arrydata = [{name:'Lily',age:18},{name:'BKqq',age:22}];var keymap = {name:'label', age: 'value'} > @param argument[0] {array} arrayData - 目标数组 > @param argument[1] {object} modifyObj - 需要修改的key与原始的kay组成的对象 > @returns {array} 修改后的数组 *** #### 根据树形结构反查整个家族 > @example this.getFamilyTree(arr, pid, idStr, pIdStr); > @param {array} arr - 数据 > @param {string|number} pid - 待查找的值 > @param {string} idStr - id > @param {string} pIdStr - 父 id > @returns {array} *** #### 对象赋值处理,防止污染对象 > @example this.dto2entity(dto, entity); > {a: 0, b: 1, d: ""} > var dto = {a: 0, b: 1, c: 'hahaha'} > var en = {a: '', b: '', d: ''} > this.dto2entity(dto, en) > console.log(en) > @param {Object} dto - 源对象 > @param {Object} entity - 目标对象 > @returns {array} *** ### 排序方法 #### 用途:sort 排序参数处理-降序 > @example this.getDesc('id'); > var arr = [{id:2},{id:1},{id:3}]; > // [{id:1},{id:2},{id:3}] > arr.sort(this.getDesc('id')) > @param {string} prop - 排序的参数 > @returns {array} *** #### 生成[n,m]的随机整数 > @example this.getDescDate('id'); > @param argument[0] {number} minNum > @param argument[1] {number} maxNum > @returns ***