JavaScript非常好用,非常灵活,代码实现方式多种多样;有时候一行代码就可以解决,但是尽量不要用两行。本文整理了非常有用的单行代码。这些需求在开发中很常见。使用单行代码可以帮助您提高工作效率。数组去重从数组中删除所有重复值。有很多方法可以实现它。这里说说最简单的方法,一行代码就可以搞定:constuniqueArr=(arr)=>[...newSet(arr)];console。log(uniqueArr(["前端","js","html","js","css","html"]));//['前端','js','html','css'的]uniqueArr方法将数据转换成Set,然后解构成数组返回。从url获取参数并转化为目标网页路径的形式往往是:www.baidu.com?search=js&xxx=kkk,我们经常需要获取参数,可以使用第三方qs来实现package,如果你只是为了实现去参数,这行代码就可以实现,不用引入qs。constgetParameters=URL=>JSON.parse(`{"${decodeURI(URL.split("?")[1]).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')}"}`)getParameters("https://www.google.com.hk/search?q=js+md&newwindow=1");//{q:'js+md',newwindow:'1'}检查对象是否为空检查对象是否为空,其实并没有那么简单,即使对象为空,每检查对象是否等于{}的时间也会返回false。幸运的是,下面的一行代码正是我们想要的。constisEmpty=obj=>Reflect.ownKeys(obj).length===0&&obj.constructor===Object;isEmpty({})//trueisEmpty({a:"notempty"})//false反转字符串使用split结合reverse和join方法可以轻松实现字符串的反转。constreverse=str=>str.split('').reverse().join('');reverse('thisisreverse');//esreversisihtgeneraterandomhexadecimalgeneraterandomnumbers相信你能派上用场,即随机生成十六进制,例如生成十六进制颜色值。constrandomHexColor=()=>`#${Math.floor(Math.random()*0xffffff).toString(16).padEnd(6,"0")}`console.log(randomHexColor());//#a2ce5b检查当前选项卡是否在后台。浏览器使用标签式浏览。任何网页都可能在后台。此时,用户不在浏览。知道如何快速检测到您的网页对用户隐藏了吗?它仍然可见吗?constisTabActive=()=>!document.hidden;isTabActive()//true|false检测元素是否处于焦点。activeElement属性返回文档中当前获得焦点的元素。constelementIsInFocus=(el)=>(el===document.activeElement);elementIsInFocus(anyElement)//元素处于焦点,返回true,否则返回false检查设备类型使用navigator.userAgent判断是移动设备还是电脑设备:constjudgeDeviceType=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|OperaMini/i.test(navigator.userAgent)?'手机':'PC';judgeDeviceType()//PC|移动文本复制到剪贴板API它的所有操作都是异步的,返回Promise对象,不会导致页面卡顿。此外,它可以将任意内容(如图片)放入剪贴板。constcopyText=async(text)=>awaitnavigator.clipboard.writeText(text)copyText('one-linerfront-endworld')获取选中的文本使用内置的getSelection获取用户选中的文本:constgetSelectedText=()=>window.getSelection().toString();getSelectedText();//返回选中的内容,判断某天是否是工作日我们在写日历组件的时候经常会用到它来判断某天是否一个工作日;星期一到星期五对于工作日:constisWeekday=(date)=>date.getDay()%6!==0;isWeekday(newDate(2022,03,11))//true转换华氏度/摄氏度处理温度有时会令人困惑。这两个函数可帮助您将华氏温度转换为摄氏温度和将摄氏温度转换为华氏温度。将华氏度转换为摄氏度:constfahrenheitToCelsius=(fahrenheit)=>(fahrenheit-32)*5/9;华氏度到摄氏度(50);//10摄氏度转华氏度:constcelsiusToFahrenheit=(celsius)=>celsius*9/5+32;celsiusToFahrenheit(100)//212两个日期相差的天数在日常开发中,经常需要显示剩余天数。一般我们需要计算两个日期相差的天数:constdayDiff=(date1,date2)=>Math.ceil(Math.abs(date1.getTime()-date2.getTime())/86400000);dayDiff(newDate("2021-10-21"),newDate("2022-02-12"))//结果:114将RGB转换为十六进制constrgbToHex=(r,g,b)=>"#"+((1<<24)+(r<<16)+(g<<8)+b).toString(16).slice(1);rgbToHex(255,255,255);//#ffffff计算数组平均值的方法有很多种,计算逻辑是一样的,但是实现方法不同。一行代码很简单:constaverage=(arr)=>arr.reduce((a,b)=>a+b)/arr.length;average([1,9,18,36])//16作者:芝士加链接:https://juejin.cn/post/7145623660680708104来源:稀土掘金版权归作者所有。商业转载请联系作者授权,非商业转载请注明出处。
