js-methods-library

javascript 实用函数库

Usage no npm install needed!

<script type="module">
  import jsMethodsLibrary from 'https://cdn.skypack.dev/js-methods-library';
</script>

README

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