当前位置: 首页 > 科技观察

11个让你惊叹的罕见JavaScript单行代码

时间:2023-03-13 21:27:33 科技观察

如果你想给专业开发人员留下深刻印象,你会怎么做?很简单:用简单的逻辑和尽可能少的代码解决复杂的问题。随着ES6箭头函数的引入,可以创建看起来优雅而简单的单行代码。在这篇文章中,我将与您分享11个罕见但强大的单线。你准备好了吗?让我们从第一个开始吧!1.获取字符串中的字符数获取字符数是一个有用的实用工具,在很多情况下都很有用。您可以使用它来获取单词后跟的空格数,或者可以使用它来获取字符串中某个定界符的计数。constcharacterCount=(str,char)=>str.split(char).length-1的思路很简单。我们使用传递的参数char拆分字符串并获取返回数组的长度。因为每次拆分字符串,都会比拆分器多一个;所以减去1,我们有一个characterCount单行。2.检查对象是否为空检查对象是否为空实际上比看起来要困难得多。每次检查对象是否等于{}都会返回false,即使对象为空。幸运的是,下面的一行代码正是我们想要的。constisEmpty=obj=>Reflect.ownKeys(obj).length===0&&obj.constructor===Object在这一行中,我们检查对象键的长度是否等于0,以及传递的参数是否为实际对象。3.等待一定时间后执行这一行我们会接触到一些异步编程。这个想法很简单。运行代码时,如果要等待一定的时间,这里是wait一行:constwait=async(milliseconds)=>newPromise((resolve)=>setTimeout(resolve,milliseconds));在等待一行中,我们创建一个承诺并在给定时间后使用setTimeout函数解决它。4.获取两个日期之间的天数差在开发Web应用程序时,日期通常是最容易混淆的部分,因为有很多容易计算错误的概念。这是一个功能强大的单行代码,用于计算两个日期之间的天数差异。但还有更多。像我一样,你可以创建自己的一行来计算每月、每年的差异等。单行constdaysBetween=(date1,date2)=>Math.ceil(Math.abs(date1-date2)/(1000*60*60*24))背后的逻辑很容易理解。减去两个日期时,返回值是以毫秒为单位的差异。要将毫秒转换为天,我们必须将其分别除以毫秒、秒、分钟和小时。5.重定向到另一个URL如果你曾经创建过一个真实的网站,我相信你已经遇到过身份验证逻辑。例如,非管理员用户不应该能够访问/admin路由。如果用户尝试,则您必须将他们重定向到另一个URL。这种单行代码完全适用于我上面提到的情况,但我认为您可以找到更多用例。constredirect=url=>location.href=urllocation是全局window对象上的一个方法,设置href属性的行为与用户单击链接时的行为相同。6.检查您的设备是否支持触摸随着越来越多的设备可以连接到互联网,创建响应式网站的需求也在增长。20年前,开发人员会考虑网站的桌面版本,但今天超过50%的网络流量来自触摸设备。因此,根据设备的触摸支持采取一些行动是一个非常重要的概念。consttouchSupported=()=>('ontouchstart'inwindow||DocumentTouch&&documentinstanceofDocumentTouch)在这一行中,我们检查文档是否支持touchstart事件。7.在元素后插入一串HTML开发Web应用程序,使用JavaScript来更新DOM是很常见的事情。有一些基本的方法可以完成任务,但当事情变得复杂时,就很难克服。这是一个在HTML元素之后立即注入一串HTML的单行代码。经过几分钟的思考和谷歌搜索,我相信您可以找到这个单行本的以前版本。constinsertHTMLAfter=(html,el)=>el.insertAdjacentHTML('afterend',html)8.Shufflingarrays在开发中对一组数据进行Shuffle是随时可能遇到的常见情况。不幸的是,没有内置的JavaScript数组的洗牌方法。然而,这里有一个shuffleone-liner,你可以每天使用:constshuffle=arr=>arr.sort(()=>0.5-Math.random())它使用数组的排序方法,在前一个元素之前数组或然后随机排序。9.获取网页上选中的文本浏览器在全局windows对象上有一个名为getSelection的内置方法。使用此方法,您可以创建一行返回网页上突出显示或选定的文本。constgetSelectedText=()=>window.getSelection().toString()10.获取一个随机的布尔值在编程的时候,尤其是写游戏的时候,有时候会想随机的进行一些动作。在这种情况下,下面的一行代码非常方便。constgetRandomBoolean=()=>Math.random()>=0.5上面的单行有50/50的机会返回true或false。因为产生大于0.5的随机数的概率等于小于0.5的概率。但是,例如,如果您想获得一个有70%错误概率的随机布尔值,那么您只需将0.5更改为0.7,依此类推。11.计算数组的平均值计算数组平均值的方法有很多种。但事实对所有人都是一样的。您必须获得数组及其长度的总和;然后除法给出平均值。Constaverage=(arr)=>arr.reduce((a,b)=>a+b)/arr.length在平均单行中,我们使用reduce来获取一行中数组的总和,而不是使用循环。然后我们将其除以数组长度,即数组的平均值。写在今天内容的最后,到此为止,我想你已经学会了11个简单但功能强大的JavaScript单行代码。我尽量挑选不太流行和众所周知的东西,这样你就可以学到新东西。我每天都使用它们,我认为它对你也有帮助。