js-methods-library.js
Getting Started
install
npm install js-methods-library
using
vue-cli
useing import Tools from 'js-methods-library'
Vue.use(Tools)
this.***()
other
useing <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