JavaScript常用工具函数库汇总
网络编程 2021-07-04 14:06www.168986.cn编程入门
业务中比较常用的JavaScript工具函数,可以用在前端环境,也可以用在node服务端,统一整理,方便查阅,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
对象或数组的深拷贝
/ 对象或数组的深拷贝 @param {} cloneObj 被克隆的对象 @param {} targetObj 克隆的目标对象 @param {} isOverride 若属性重复,是否覆盖被克隆对象的属性 / function deepClone(cloneObj, targetObj, isOverride = true) { const _toString = Object.prototype.toString if (_toString.call(cloneObj) !== '[object Array]' && _toString.call(cloneObj) !== '[object Object]') { return cloneObj } var cloneTarget = _toString.call(cloneObj) === '[object Array]' ? [] : {} for (let key in cloneObj) { if (Object.prototype.hasOwnProperty.call(cloneObj, key)) { if (_toString.call(cloneObj[key]) === '[object Array]' || _toString.call(cloneObj[key]) === '[object Object]') { cloneTarget[key] = deepClone(cloneObj[key]) } else { cloneTarget[key] = cloneObj[key] } } } if (targetObj && (_toString.call(cloneObj) === _toString.call(targetObj))) { //这里要注意,克隆的目标对象也要deepClone下 cloneTarget = isOverride ? Object.assign(cloneTarget, deepClone(targetObj)) : Object.assign(deepClone(targetObj), cloneTarget) } return cloneTarget }
精准判断数据类型
//精准判断数据类型 function getVerifyDataTypes() { const types = ["String", "Number", "Boolean", "Null", "Undefined", "Function", "Object", "Array", "Date", "Error", "RegExp", "Symbol", "Map", "Set"] let Type = {} // 示例用法Type.isString('javascript') for (let i = 0; i < types.length; i++) { Type[`is${types[i]}`] = obj => Object.prototype.toString.call(obj) === `[object ${types[i]}]` } // 判断字符串是否为json格式 Type.isJsonStr = str => { if (typeof str == 'string') { try { let obj = JSON.parse(str); if (obj && typeof obj == 'object') { return true; } return false; } catch (e) { return false; } } else { return false; } } return Type }
日期格式化
/ 日期格式化 @param {} date 日期对象 @param {} beforeHyphen 年月日连字符 @param {} afterHyphen 时分秒连字符 / function formatDate(date = new Date(), beforeHyphen = '-', afterHyphen = ':') { const formatNumber = n => { n = n.toString() return n[1] ? n : `0${n}` } const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() const hour = date.getHours() const minute = date.getMinutes() const second = date.getSeconds() const ymd = [year, month, day].map(formatNumber).join(beforeHyphen) const hms = [hour, minute, second].map(formatNumber).join(afterHyphen) return `${ymd} ${hms}` }
把时间戳转换为剩余的天、时、分、秒
/ 把时间戳转换为剩余的天、时、分、秒,一般应用于倒计时场景中 @param {} timestamp 时间戳 / function converTimestamp(timestamp) { const formatNumber = n => { n = n.toString() return n[1] ? n : `0${n}` } let day = Math.floor((timestamp / 1000 / 3600) / 24); let hour = Math.floor((timestamp / 1000 / 3600) % 24); let minute = Math.floor((timestamp / 1000 / 60) % 60); let second = Math.floor(timestamp / 1000 % 60); return { day: day, hour: formatNumber(hour), minute: formatNumber(minute), second: formatNumber(second) } }
从数组中随机取出一项
// 从数组中随机取出一项 function getRandomItemByArray(items) { return items[Math.floor(Math.random() items.length)]; }
将有父子关系的数组转换成树形结构数据
let data = [ { parentId: 0, id: 1, value: 'xxx' }, { parentId: 1, id: 3, value: 'xxx' }, { parentId: 4, id: 6, value: 'xxx' }, { parentId: 3, id: 5, value: 'xxx' }, { parentId: 2, id: 4, value: 'xxx' }, { parentId: 1, id: 2, value: 'xxx' }, ] // 转换为树形Array结构 function toTreeAry(arr, pId = 0) { return arr .filter(({ parentId }) => parentId === pId) .map(a => ({ ...a, children: toTreeAry(arr.filter(({ parentId }) => parentId !== pId), a.id) })) } // 转换为树形Object结构 function toTreeObj(arr, pId = 0) { let res = {} arr.filter(({ parentId }) => parentId === pId) .forEach(a => { res[a.id] = { ...a, children: toTreeObj(arr.filter(({ parentId }) => parentId !== pId), a.id) } }) return res } console.log(toTreeAry(data)) console.log(toTreeObj(data))
生成随机字符串
// 随机字符串 const randomStr = () => { return new Date().getTime() + '-' + Math.random().toString(36).substr(2) }
过滤html标签
// 过滤html标签 const filterHTMLTag = (str) => { str = str.replace(/<\/?[^>]>/g, ''); //去除HTML Tag str = str.replace(/[|]\n/, '') //去除行尾空格 str = str.replace(/&npsp;/ig, ''); //去掉npsp return str; }
以上就是JavaScript常用工具函数库汇总的详细内容,更多关于JavaScript工具函数库的资料请关注狼蚁SEO其它相关文章!
上一篇:JS实现密码框效果
下一篇:el-form 多层级表单的实现示例
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南