首页 > IT职业 > > 【适合收藏】让你减少加班的15条高效JS技巧!
•作者:陈大鱼头•github: KRISACHAN[1]
掌握这15个JS技巧,让你减少加班次数,多抽出点时间来陪女(男)朋友。
const delay = ms => new Promise((resolve, reject) => setTimeout(resolve, ms))const getData = status => new Promise((resolve, reject) => {status ? resolve('done') : reject('fail')})const getRes = async (data) => {try {const res = await getData(data)const timestamp = new Date().getTime()await delay(1000)console.log(res, new Date().getTime() - timestamp)} catch (error) {console.log(error)}}getRes(true) // 隔了1秒
const listChunk = (list, size = 1, cacheList = []) => {const tmp = [...list]if (size <= 0) {return cacheList}while (tmp.length) {cacheList.push(tmp.splice(0, size))}return cacheList}console.log(listChunk([1, 2, 3, 4, 5, 6, 7, 8, 9])) // [[1], [2], [3], [4], [5], [6], [7], [8], [9]]console.log(listChunk([1, 2, 3, 4, 5, 6, 7, 8, 9], 3)) // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]console.log(listChunk([1, 2, 3, 4, 5, 6, 7, 8, 9], 0)) // []console.log(listChunk([1, 2, 3, 4, 5, 6, 7, 8, 9], -1)) // []
const intersection = (list, ...args) => list.filter(item => args.every(list => list.includes(item)))console.log(intersection([2, 1], [2, 3])) // [2]console.log(intersection([1, 2], [3, 4])) // []
const curring = fn => {const { length } = fnconst curried = (...args) => {return (args.length >= length? fn(...args): (...args2) => curried(...args.concat(args2)))}return curried}const listMerge = (a, b, c) => [a, b, c]const curried = curring(listMerge)console.log(curried(1)(2)(3)) // [1, 2, 3]console.log(curried(1, 2)(3)) // [1, 2, 3]console.log(curried(1, 2, 3)) // [1, 2, 3]
const trimStart = str => str.replace(new RegExp('^([\\s]*)(.*)$'), '$2')console.log(trimStart(' abc ')) // abcconsole.log(trimStart('123 ')) // 123
const trimEnd = str => str.replace(new RegExp('^(.*?)([\\s]*)$'), '$1')console.log(trimEnd(' abc ')) // abcconsole.log(trimEnd('123 ')) // 123
const getIndex = el => {if (!el) {return -1}let index = 0do {index++} while (el = el.previousElementSibling);return index}
const getOffset = el => {const {top,left} = el.getBoundingClientRect()const {scrollTop,scrollLeft} = document.bodyreturn {top: top + scrollTop,left: left + scrollLeft}}
const dataType = obj => Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase();const isMobile = () => 'ontouchstart' in windowconst fade = (el, type = 'in') {el.style.opacity = (type === 'in' ? 0 : 1)let last = +new Date()const tick = () => {const opacityValue = (type === 'in'? (new Date() - last) / 400: -(new Date() - last) / 400)el.style.opacity = +el.style.opacity + opacityValuelast = +new Date()if (type === 'in'? (+el.style.opacity < 1): (+el.style.opacity > 0)) {requestAnimationFrame(tick)}}tick()}
const dataPattern = (str, format = '-') => {if (!str) {return new Date()}const dateReg = new RegExp(`^(\\d{2})${format}(\\d{2})${format}(\\d{4})$`)const [, month, day, year] = dateReg.exec(str)return new Date(`${month}, ${day} ${year}`)}console.log(dataPattern('12-25-1995')) // Mon Dec 25 1995 00:00:00 GMT+0800 (中国标准时间)
const html = document.querySelector('html')html.oncopy = () => falsehtml.onpaste = () => false
const input = document.querySelector('input[type="text"]')const clearText = target => {const {value} = targettarget.value = value.replace(/[^\u4e00-\u9fa5]/g, '')}input.onfocus = ({target}) => {clearText(target)}input.onkeyup = ({target}) => {clearText(target)}input.onblur = ({target}) => {clearText(target)}input.oninput = ({target}) => {clearText(target)}
const removeHTML = (str = '') => str.replace(/<[\/\!]*[^<>]*>/ig, '')console.log(removeHTML('<h1>哈哈哈哈<呵呵呵</h1>')) // 哈哈哈哈<呵呵呵
以上十五个技巧都是我在日常开发中经常用到的一些代码片段,善用这些技巧,可以大大减少我们的开发时间。如果此时正在看文章的你也有类似的技巧心得,不妨在下方留言来分享给大家。
[1] KRISACHAN: https://github.com/KRISACHAN

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69975286/viewspace-3130260/ ,如需转载,请注明出处,否则将追究法律责任。