色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript常用工具函數(shù)庫(kù)匯總

瀏覽:85日期:2023-10-14 11:00:31

對(duì)象或數(shù)組的深拷貝

/** * 對(duì)象或數(shù)組的深拷貝 * @param {*} cloneObj 被克隆的對(duì)象 * @param {*} targetObj 克隆的目標(biāo)對(duì)象 * @param {*} isOverride 若屬性重復(fù),是否覆蓋被克隆對(duì)象的屬性 */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))) { //這里要注意,克隆的目標(biāo)對(duì)象也要deepClone下 cloneTarget = isOverride ? Object.assign(cloneTarget, deepClone(targetObj)) : Object.assign(deepClone(targetObj), cloneTarget) } return cloneTarget}

精準(zhǔn)判斷數(shù)據(jù)類型

//精準(zhǔn)判斷數(shù)據(jù)類型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 日期對(duì)象 * @param {*} beforeHyphen 年月日連字符 * @param {*} afterHyphen 時(shí)分秒連字符 */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}`}

把時(shí)間戳轉(zhuǎn)換為剩余的天、時(shí)、分、秒

/** * 把時(shí)間戳轉(zhuǎn)換為剩余的天、時(shí)、分、秒,一般應(yīng)用于倒計(jì)時(shí)場(chǎng)景中 * @param {*} timestamp 時(shí)間戳 */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) }}

從數(shù)組中隨機(jī)取出一項(xiàng)

// 從數(shù)組中隨機(jī)取出一項(xiàng)function getRandomItemByArray(items) { return items[Math.floor(Math.random() * items.length)];}

將有父子關(guān)系的數(shù)組轉(zhuǎn)換成樹形結(jié)構(gòu)數(shù)據(jù)

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’ },]// 轉(zhuǎn)換為樹形Array結(jié)構(gòu)function toTreeAry(arr, pId = 0) { return arr .filter(({ parentId }) => parentId === pId) .map(a => ({ ...a, children: toTreeAry(arr.filter(({ parentId }) => parentId !== pId), a.id) }))}// 轉(zhuǎn)換為樹形Object結(jié)構(gòu)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))

生成隨機(jī)字符串

// 隨機(jī)字符串const randomStr = () => { return new Date().getTime() + ’-’ + Math.random().toString(36).substr(2)}

過(guò)濾html標(biāo)簽

// 過(guò)濾html標(biāo)簽const filterHTMLTag = (str) => { str = str.replace(/</?[^>]*>/g, ’’); //去除HTML Tag str = str.replace(/[|]*n/, ’’) //去除行尾空格 str = str.replace(/&npsp;/ig, ’’); //去掉npsp return str;}

以上就是JavaScript常用工具函數(shù)庫(kù)匯總的詳細(xì)內(nèi)容,更多關(guān)于JavaScript工具函數(shù)庫(kù)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 91视频一88av | 久久影院yy6080 | 免费在线观看一级毛片 | a级毛片视频免费观看 | 曰本一区 | 一级欧美激情毛片 | 一级成人毛片免费观看 | 国产日产久久高清欧美一区 | 综合自拍亚洲综合图区美腿丝袜 | 日本高清不卡中文字幕 | 国产在线成人一区二区 | 成人夜色视频网站在线观看 | 五月激情丁香婷婷综合第九 | 国产精品日韩欧美一区二区 | 成年日韩片av在线网站 | 在线成人免费 | 在线精品国产成人综合第一页 | 成人国产视频在线观看 | 一本综合久久 | 一级女性全黄久久生活片 | 久久97视频| 成人公开免费视频 | 国产愉拍精品手机 | 国产男女猛烈无遮档免费视频网站 | 岛国片欧美一级毛片 | 精品日韩一区二区三区 | 亚洲国产精品网 | 国产精品成人在线播放 | 国产tv在线观看 | 欧美精品一区二区三区四区 | 男女男免费视频网站国产 | 亚洲欧美卡通动漫丝袜美腿 | 韩国精品一区二区三区四区五区 | 黄色成人毛片 | 在线中文字幕精品第5页 | 免费一级大毛片a一观看不卡 | 亚洲精品一区二区三区在线看 | 国产精品美女视视频专区 | 国产成人v爽在线免播放观看 | 欧美18毛片免费看 | yy毛片|