spring mvc 网站开发,微信公众号和微网站,源码建站和模板建站区别,wordpress如何开发手机不知不觉距离第一次发文章介绍自己写的库BootsJS已经过去一个月了#xff0c;这个月里收到了许许多多JYM的反馈与建议#xff0c;自己也再一次对BootsJS进行了改进与完善#xff0c;又一次增加了很多功能#xff0c;为此我想应该给JYM们汇报汇报这个月的工作进展。 BootJS仓…不知不觉距离第一次发文章介绍自己写的库BootsJS已经过去一个月了这个月里收到了许许多多JYM的反馈与建议自己也再一次对BootsJS进行了改进与完善又一次增加了很多功能为此我想应该给JYM们汇报汇报这个月的工作进展。 BootJS仓库https://github.com/JunLiangWangX/BootsJS
BootJS文档https://junliangwangx.github.io/BootsJS/
上一版本功能
害怕新的同学没看过之前文章容我花点篇幅介绍下之前版本支持的功能
库的安装与引用方法的具体使用大家可以看我之前的文章《摸鱼时间写了个库比lodash更丰富》我就不在这里赘述了。
日期处理工具DateTool
方法作用dateCalculator日期加/减计算dateFormater格式化日期与时间getDateDiff计算两日期的相隔时间getDaysInMonth给定日期返回当月总天数isLeapYear给定年份判断是否闰年
性能工具PerformanceTool
方法作用debounce防抖throttle节流memoize缓存函数的计算结果
字符串处理工具StringTool
方法作用camelCaseNameToDashName驼峰命名转短横线命名dashNameToUpperCamelCaseName短横线命名转大写驼峰命名
正则规则RegRules
方法作用IPAddressRule匹配IP地址chineseIDCardRule匹配身份证号码chinesePhoneNumberRule匹配中国手机号码……
优先级队列PriorityQueue
方法作用priorityQueue.enqueue(‘1’, 1)入队priorityQueue.dequeue()出队priorityQueue.top获取队顶元素priorityQueue.length获取队列大小priorityQueue.isEmpty队列是否为空
本版本新增的功能
我们来看看这个月加入了什么引人注目的功能吧
对象处理工具ObjectTool
// -------- Global Import(全局引入)
const BootsJS require(boots-js); // Node
import BootsJS from boots-js // Es6 Module
BootsJS.ObjectTool.type(123); //Number// -------- Import on Demand(按需引入)
const { ObjectTool } require(boots-js/object-tool); // Node
import { ObjectTool } from boots-js/object-tool // Es6 Module
ObjectTool.type(123); //Number判断参数类型type()
ObjectTool.type(new Array()); //Array
ObjectTool.type(123); //String
ObjectTool.type(true); //Boolean
ObjectTool.type(new Map()); //Map深度拷贝对象deepClone()
// 支持的类型原始类型、TypedArray、Array、Set、Map、Object、ArrayBuffer、DataView、Date、RegExp、Symbol、Proxy将被视为对象拦截器无法复制
// 注意不支持的类型例如Function、WeakRef、WeakSet、WeakMap等会直接复制其引用const obj1{Number:1},obj2{Boolean:2},obj3{obj:obj1,String:123},
const testObj{Int8Array:new Int8Array([1,2,3,4,5]),Date:new Date(),RegExp:/1234/,Array:new Array(...[obj1,obj2,obj3]),Set:new Set([obj1,obj2,obj3]),Map:map,Object:obj3,ArrayBuffer:new ArrayBuffer(10),DataView:new DataView(new ArrayBuffer(10)),Function:fun
}let deepCopyObjObjectTool.deepClone(testObj)
deepCopyObj.Int8ArraytestObj.Int8Array //false
deepCopyObj.DatetestObj.Date //false
deepCopyObj.Object.obj1.objtestObj.Object.obj1.obj //false比较两对象是否相等isEqual()
// 支持的类型原始类型、TypedArray、Array、Set、Map、Object、ArrayBuffer、DataView、Date、RegExp、Symbol(比较其description)、Proxy将被视为对象拦截器无法比较
// 注意不支持的类型例如Function、WeakRef、WeakSet、WeakMap等会直接比较其引用地址const testObj2{BigInt64Array:new BigInt64Array([BigInt(123),BigInt(123),BigInt(123)]),RegExp:/1234/,Array:new Array(...[obj1,obj2,obj3,obj4]),Set:new Set([obj1,obj2,obj3,obj4]),Object:obj4,Map:map2,Date:date,ArrayBuffer:new ArrayBuffer(10),DataView:new DataView(new ArrayBuffer(10)),
}ObjectTool.isEqual(testObj2,ObjectTool.deepClone(testObj2)) //true
let testObj5ObjectTool.deepClone(testObj2)
testObj5.Object.obj1.String12344
ObjectTool.isEqual(testObj2,testObj5) //false将对象转换为StringargToStrKey() // 支持的类型原始类型、TypedArray、Array、Set、Map、Object、ArrayBuffer、Function、DataView、Date、 RegExp、Symbol、Proxy将被视为对象拦截器无法输出
// 注意不支持的类型例如WeakRef、WeakSet、WeakMap等会直接输出类型const testObj2{BigInt64Array:new BigInt64Array([BigInt(123),BigInt(123),BigInt(123)]),RegExp:/1234/,Array:new Array(...[obj1,obj2,obj3,obj4]),Set:new Set([obj1,obj2,obj3,obj4]),Object:obj4,Map:map2,Date:date,ArrayBuffer:new ArrayBuffer(10),DataView:new DataView(new ArrayBuffer(10)),
}
const testObj3{Array:new Array(...[obj1,obj2,obj3,obj4]),Set:new Set([obj1,obj2,obj3,obj4]),BigInt64Array:new BigInt64Array([BigInt(123),BigInt(123),BigInt(123)]),ArrayBuffer:new ArrayBuffer(10),Object:obj4,Map:map2,Date:date,DataView:new DataView(new ArrayBuffer(10)),RegExp:/1234/,
}let testObj5ObjectTool.deepClone(testObj2)
testObj5.Object.obj1.String12344ObjectTool.argToStrKey(testObj2)ObjectTool.argToStrKey(testObj3) //true
ObjectTool.argToStrKey(testObj2)ObjectTool.argToStrKey(testObj5) //false处理树的工具TreeTool
// -------- Global Import(全局引入)
const BootsJS require(boots-js); // Node
import BootsJS from boots-js // Es6 Module
BootsJS.TreeTool.tree2Array(tree,childList,options)// -------- Import on Demand(按需引入)
const { TreeTool } require(boots-js/tree-tool); // Node
import { TreeTool } from boots-js/tree-tool // Es6 Module
TreeTool.tree2Array(tree,childList,options)树转换成数组 tree2Array()
const tree {name: 中国,code: 0,childList: [{name: 重庆,code: 01,},{name: 四川,code: 02,},{name: 广东,code: 03,},]} let arr TreeTool.tree2Array([tree], childList, {isGenerateLevel: true,generateLevelAttributeName:level,isGenerateParentID: true,generateParentIDAttributeName: parentCode,nodeIDAttributeName: code,deleteAttributeList: [childList]})console.info(arr)[{ name: 中国, code: 0 , level:0 },{ name: 重庆, code: 01, level:1 , parentCode: 0 },{ name: 四川, code: 02, level:1 , parentCode: 0 },{ name: 广东, code: 03, level:1 , parentCode: 0 },]数组转换为树array2Tree()
const arr [{ name: 中国, code: 0 , level:0 },{ name: 重庆, code: 01, level:1 , parentCode: 0 },{ name: 四川, code: 02, level:1 , parentCode: 0 },{ name: 广东, code: 03, level:1 , parentCode: 0 },]let genTree TreeTool.array2Tree(arr, code, parentCode, childList, (node) {return !(parentCode in node)})console.info(genTree)[{name: 中国,code: 0,level: 0,childList: [{ name: 重庆, code: 01, level:1, parentCode: 0, childList: [] },{ name: 四川, code: 02, level:1, parentCode: 0, childList: [] },{ name: 广东, code: 03, level:1, parentCode: 0, childList: [] }]}]获取所有子节点getChildList()
const tree {name: 中国,code: 0,childList: [{name: 重庆,code: 01,},{name: 四川,code: 02,},{name: 广东,code: 03,},]} let arr TreeTool.getChildList([tree], code, 0, childList)console.info(arr)[{ name: 重庆, code: 01 },{ name: 四川, code: 02 },{ name: 广东, code: 03 },]过滤节点filter()
const tree {name: 中国,code: 0,level: 0,childList: [{ name: 重庆, code: 01, level:1, parentCode: 0, childList: [] },{ name: 四川, code: 02, level:1, parentCode: 0, childList: [] },{ name: 广东, code: 03, level:1, parentCode: 0, childList: [] }]}let arr TreeTool.filter([tree], childList, (obj) {return obj.parentCode 0})console.info(arr)[{ name: 重庆, code: 01, level:1 , parentCode: 0, childList: [] },{ name: 四川, code: 02, level:1 , parentCode: 0, childList: [] },{ name: 广东, code: 03, level:1 , parentCode: 0, childList: [] },]查找某节点的路径findPath()
const tree {name: 中国,code: 0,level: 0,childList: [{ name: 重庆, code: 01, level:1, parentCode: 0, childList: [] },{ name: 四川, code: 02, level:1, parentCode: 0, childList: [] },{ name: 广东, code: 03, level:1, parentCode: 0, childList: [] }]}let path TreeTool.findPath([tree],code,03,childList)console.info(path)[{name: 中国,code: 0,level: 0,childList: [ [Object], [Object], [Object] ]},{ name: 广东, code: 03, parentCode: 0, level: 1, childList: [] }]处理数组的工具ArrayTool
// -------- Global Import(全局引入)
const BootsJS require(boots-js); // Node
import BootsJS from boots-js // Es6 Module
BootsJS.ArrayTool.removeDuplicates([1,2,3,1]);// -------- Import on Demand(按需引入)
const { ArrayTool } require(boots-js/array-tool); // Node
import { ArrayTool } from boots-js/array-tool // Es6 Module
ArrayTool.removeDuplicates([1,2,3,1]);数组去重 removeDuplicates()
const test1{a:1},test2{a:1},
arr1[test1,test2,test1],
arr2[1,2,3,1,4];
ArrayTool.removeDuplicates(arr1) // [{a:1},{a:1}]
ArrayTool.removeDuplicates(arr1,true) // [{a:1}]
ArrayTool.removeDuplicates(arr2) //[1,2,3,4];处理日期时间的工具DateTool
// -------- Global Import(全局引入)
const BootsJS require(boots-js); // Node
import BootsJS from boots-js // Es6 Module
BootsJS.DateTool.dateFormater(new Date(),YYYY-MM-DD HH:mm:ss);// -------- Import on Demand(按需引入)
const { DateTool } require(boots-js/date-tool); // Node
import { DateTool } from boots-js/date-tool // Es6 Module
DateTool.dateFormater(new Date(),YYYY-MM-DD HH:mm:ss);转换时区 convertTimeZone()
DateTool.convertTimeZone(1711611931754,DateTool.timeZoneOffsetEnum[UTC08:00], DateTool.timeZoneOffsetEnum[UTC-06:00])
DateTool.convertTimeZone(2024/2/12,DateTool.timeZoneOffsetEnum[UTC08:00], DateTool.timeZoneOffsetEnum[UTC09:00])最后
目前我只想到和完成了这些功能希望大家多多提提意见呀包括想要的功能改进建议等等我一个人的想法和能力都过于局限如果有余力的话欢迎PR一起弄呀如果真的对大家有所帮助能给个star鼓励下作者嘛如果我也能有个超多star的仓库就好了
BootJS仓库https://github.com/JunLiangWangX/BootsJS
BootJS文档https://junliangwangx.github.io/BootsJS/
点击链接或微信搜索“汪啊汪”关注我及时掌握最新动态
本文由mdnice多平台发布 文章转载自: http://www.morning.nzwp.cn.gov.cn.nzwp.cn http://www.morning.qmbtn.cn.gov.cn.qmbtn.cn http://www.morning.krdmn.cn.gov.cn.krdmn.cn http://www.morning.jfwbr.cn.gov.cn.jfwbr.cn http://www.morning.phjyb.cn.gov.cn.phjyb.cn http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn http://www.morning.kdnrc.cn.gov.cn.kdnrc.cn http://www.morning.hhqtq.cn.gov.cn.hhqtq.cn http://www.morning.cxryx.cn.gov.cn.cxryx.cn http://www.morning.jmnfh.cn.gov.cn.jmnfh.cn http://www.morning.jtfsd.cn.gov.cn.jtfsd.cn http://www.morning.tcylt.cn.gov.cn.tcylt.cn http://www.morning.hlnys.cn.gov.cn.hlnys.cn http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn http://www.morning.plwfx.cn.gov.cn.plwfx.cn http://www.morning.jnptt.cn.gov.cn.jnptt.cn http://www.morning.zcrjq.cn.gov.cn.zcrjq.cn http://www.morning.srhqm.cn.gov.cn.srhqm.cn http://www.morning.smhtg.cn.gov.cn.smhtg.cn http://www.morning.fmjzl.cn.gov.cn.fmjzl.cn http://www.morning.gqddl.cn.gov.cn.gqddl.cn http://www.morning.gyrdn.cn.gov.cn.gyrdn.cn http://www.morning.kjrp.cn.gov.cn.kjrp.cn http://www.morning.nlqmp.cn.gov.cn.nlqmp.cn http://www.morning.mdfxn.cn.gov.cn.mdfxn.cn http://www.morning.cpmfp.cn.gov.cn.cpmfp.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.thpns.cn.gov.cn.thpns.cn http://www.morning.lszjq.cn.gov.cn.lszjq.cn http://www.morning.tlfzp.cn.gov.cn.tlfzp.cn http://www.morning.mzhgf.cn.gov.cn.mzhgf.cn http://www.morning.dnzyx.cn.gov.cn.dnzyx.cn http://www.morning.ygxf.cn.gov.cn.ygxf.cn http://www.morning.krxzl.cn.gov.cn.krxzl.cn http://www.morning.btlmb.cn.gov.cn.btlmb.cn http://www.morning.qbksx.cn.gov.cn.qbksx.cn http://www.morning.fcrw.cn.gov.cn.fcrw.cn http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn http://www.morning.fyxtn.cn.gov.cn.fyxtn.cn http://www.morning.rjxwq.cn.gov.cn.rjxwq.cn http://www.morning.zjrnq.cn.gov.cn.zjrnq.cn http://www.morning.rnnts.cn.gov.cn.rnnts.cn http://www.morning.lgrkr.cn.gov.cn.lgrkr.cn http://www.morning.rnlx.cn.gov.cn.rnlx.cn http://www.morning.nbsbn.cn.gov.cn.nbsbn.cn http://www.morning.nmnhs.cn.gov.cn.nmnhs.cn http://www.morning.mqldj.cn.gov.cn.mqldj.cn http://www.morning.mhpmw.cn.gov.cn.mhpmw.cn http://www.morning.kwqcy.cn.gov.cn.kwqcy.cn http://www.morning.jntdf.cn.gov.cn.jntdf.cn http://www.morning.fesiy.com.gov.cn.fesiy.com http://www.morning.skrww.cn.gov.cn.skrww.cn http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn http://www.morning.zrks.cn.gov.cn.zrks.cn http://www.morning.tyrlk.cn.gov.cn.tyrlk.cn http://www.morning.lcbgf.cn.gov.cn.lcbgf.cn http://www.morning.shinezoneserver.com.gov.cn.shinezoneserver.com http://www.morning.stbhn.cn.gov.cn.stbhn.cn http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn http://www.morning.bsqbg.cn.gov.cn.bsqbg.cn http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.rlsd.cn.gov.cn.rlsd.cn http://www.morning.hxwrs.cn.gov.cn.hxwrs.cn http://www.morning.yhljc.cn.gov.cn.yhljc.cn http://www.morning.pcjw.cn.gov.cn.pcjw.cn http://www.morning.hlkxb.cn.gov.cn.hlkxb.cn http://www.morning.wjlnz.cn.gov.cn.wjlnz.cn http://www.morning.ltpph.cn.gov.cn.ltpph.cn http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.kfyjh.cn.gov.cn.kfyjh.cn http://www.morning.chzqy.cn.gov.cn.chzqy.cn http://www.morning.trrd.cn.gov.cn.trrd.cn http://www.morning.khpx.cn.gov.cn.khpx.cn http://www.morning.tlyms.cn.gov.cn.tlyms.cn http://www.morning.xhqr.cn.gov.cn.xhqr.cn http://www.morning.hyryq.cn.gov.cn.hyryq.cn http://www.morning.gqfjb.cn.gov.cn.gqfjb.cn http://www.morning.horihe.com.gov.cn.horihe.com http://www.morning.btblm.cn.gov.cn.btblm.cn http://www.morning.nytqy.cn.gov.cn.nytqy.cn