JavaScript!震惊你,只需一行代码!

这篇具有很好参考价值的文章主要介绍了JavaScript!震惊你,只需一行代码!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JavaScript!震惊你,只需一行代码!

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

前些年的段子里,总有一些主考官的思想格局打不开,抛出这样的问题:让我在10秒钟内记住你。于是就有了,被打耳光的,被亲的,被扒衣服的,摔手机的······但作为程序员,要怎么用代码的别人呢?

Talk is cheap, show me the code!

很简单:用简单的逻辑和尽可能少的代码行来解决一个复杂的问题。随着 ES6 箭头函数的引入,可以创建看起来优雅而简单的单行代码。

在今天的文章中,我将与你一起来学习 11 个罕见但功能强大的单行代码。现在,准备好,让我们开始吧!

1、获取字符串中的字符数

获取字符数是一个有用的实用程序,在许多情况下都很有用,我们可以使用它来获取空格数和随后的单词数,或者这可用于获取字符串中某个分隔符的计数。

const characterCount = (str, char) => str.split(char).length - 1
复制代码

这个想法很简单,我们使用传递的参数 char 拆分字符串并获取返回数组的长度。由于每次将字符串拆分,都会比拆分器多一个;所以减去 1,我们有一个 characterCount 单行。

2、检查对象是否为空

检查对象的空性实际上比看起来要困难得多,即使对象为空,每次检查对象是否等于 {} 也会返回 false。

幸运的是,下面的单行代码正是我们想要的。

const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object
复制代码

在这一行中,我们检查对象的键长度是否等于 0,以及传递的参数是否为实际对象。

3、等待一段时间再执行

在这一行中,我们将通过一些异步编程来弄脏我们的代码。这个想法很简单,在运行代码时,如果你想等待一定的时间,这里是等待单行:

const wait = async (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds));
复制代码

在等待单行中,我们创建一个承诺并在给定的时间后使用 setTimeout 函数解决它。

4、 获取两个日期之间的日差

在开发 Web 应用程序时,日期通常是实现起来最令人困惑的部分,因为有许多概念很容易被误算。

这是一个强大的单线计算两个日期之间的天差。但还有更多事情要做,正如我所做的那样,你可以创建自己的单线来计算月、年差异等。

const daysBetween = (date1, date2) => Math.ceil(Math.abs(date1 - date2) / (1000 * 60 * 60 * 24))
复制代码

这种单线背后的逻辑很容易理解。当两个日期相减时,返回值是以毫秒为单位的差值,要将毫秒转换为天,我们必须将其除以毫秒、秒、分钟和小时。

5、重定向到另一个 URL

如果你曾经创建过真实的网站,我敢肯定你遇到过身份验证逻辑。例如,非管理员用户不应该能够访问 /admin 路由。如果用户尝试,那么,你必须将其重定向到另一个 URL。

这个单线正是我上面提到的情况,但我认为你可以找到更多的用例。

const redirect = url => location.href = url
复制代码

location 是全局窗口对象的方法,设置 href 属性的行为与用户单击链接相同。

6、检查设备上的触摸支持

随着可以连接到互联网的设备越来越多,创建响应式网站的必要性也在增加。20 年前,开发者应该考虑网站的桌面版本,但今天超过 50% 的网络流量来自触摸移动设备。因此,基于设备的触控支持采取一些行动是一个非常重要的概念。

const touchSupported = () => ('ontouchstart' in window || DocumentTouch && document instanceof DocumentTouch)
复制代码

在这一行中,我们正在检查文档是否支持 touchstart 事件。

7、 在元素后插入 HTML 字符串

开发 Web 应用程序时,使用 JavaScript 更新 DOM 是一件很常见的事情。有一些基本的方法可以完成工作,但是,当情况变得复杂时,就很难克服。

这是一个在 HTML 元素之后立即注入 HTML 字符串的单行代码。经过几分钟的思考和谷歌搜索,我相信你可以找到这个单线的以前版本。

const insertHTMLAfter = (html, el) => el.insertAdjacentHTML('afterend', html)
复制代码

8、随机排列数组

在开发中打乱一组数据是一个常见的情况,你可以随时遇到,不幸的是,JavaScript 中没有内置数组的 shuffle 方法。

但是,这里有一个你可以每天使用的 shuffle one-liner:

const shuffle = arr => arr.sort(() => 0.5 - Math.random())
复制代码

它利用数组的排序方法,在数组的前一个元素之前或之后随机排序。

9、在网页上获取选定的文本

浏览器在全局窗口对象上有一个名为 getSelection 的内置方法。使用此方法,你可以创建一个单行,返回网页上突出显示或选定的文本。

const getSelectedText = () => window.getSelection().toString()
复制代码

10、获取随机布尔值

在开发时,尤其是在写游戏代码时,有时,我们会想随机采取行动。在这些情况下,下面的单行代码非常方便。

const getRandomBoolean = () => Math.random() >= 0.5
复制代码

上面的单行代码有 50/50 的机会返回真或假。因为生成的随机数大于0.5的概率等于变小的概率。

然而,例如,如果你想得到一个概率为 70% 的随机布尔值,那么你可以简单地将 0.5 更改为 0.7 等等。

11、计算数组的平均值

可以使用多种方法计算数组的平均值。但逻辑对所有人都是一样的,我们必须得到数组及其长度的总和;然后,通过除法给出平均值。

const average = (arr) => arr.reduce((a, b) => a + b) / arr.length
复制代码

在平均单行中,我们使用 reduce 来获取一行中数组的总和,而不是使用循环。然后,我们将它除以数组长度,这是一个数组的平均值。

总结

现在,我想你应该知道了 11 个简单但功能强大的 JavaScript 单行代码。我之所以试着选择那些不太流行和不太知名的技巧,主要是希望,这样可以帮助你学习新的东西。那些我们每天使用的东西,我想你已经会了。

- End -

 文章来源地址https://www.toymoban.com/news/detail-410113.html

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

 

 

到了这里,关于JavaScript!震惊你,只需一行代码!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java大厂常见1000道面试题集锦(一)

    本系列为Java常见面试题集锦,持续更新中,包括笔试题和面试题, 建议收藏慢慢看 while(true){} 是一个无限循环的语句,它的作用是让程序在执行到该语句时不停地循环下去,直到程序被终止或者遇到 break、return 等跳出循环的语句。 无限循环的使用场景比较多,例如: 实现

    2024年02月06日
    浏览(46)
  • docker干货分享-安装redis-只需四个命令即可

    首先保证docker安装成功: 因为已经安装成功,所以截图只是成功后的每一步: 注意:如果不是root账户登录的服务器,每个命令前面都需要加上sudo 第一步:下载redis镜像 redis最好直接用最新版 docker pull redis  通过docker images命令可以看到已经下载了redis的镜像,同时版本号是

    2024年01月18日
    浏览(30)
  • 震惊!强大的接口自动化测试框架2.0,unittest与pytest无缝穿插对接,可以像postman一样编写代码

    接口自动化测试项目2.0 本框架主要是基于 Python + unittest + ddt + HTMLTestRunner + log + excel + mysql + 企业微信通知 + Jenkins 实现的接口自动化框架。 项目参与者: 陈勇志 技术支持邮箱: 262667641@qq.com 个人微信: Testing_player 个人博客地址: https://home.cnblogs.com/u/Nephalem-262667641 微信公众号:测

    2024年02月12日
    浏览(33)
  • JavaScript 手撕大厂面试题数组扁平化以及增加版本 plus

    现在的前端面试手撕题是一个必要环节,有点时候八股回答的不错但是手撕题没写出来就会让面试官印象分大减,很可能就挂了… 数组的 扁平化 其实就是将一个多层嵌套的数组转换为只有一层的数组 比如: [1, [2, [3, [4, 5]]]] = [1,2,3,4,5,6] 一、实现一个 flat() easy 难度 二、用

    2024年02月14日
    浏览(29)
  • ElasticSearch内容分享(八):ES大厂实践 - 哈啰、腾讯、美团

    目录 哈啰:记录一次ElasticSearch的查询性能优化 腾讯:腾讯万亿级 Elasticsearch 技术实践 美团:美团外卖搜索基于Elasticsearch的优化实践 搜索平台的公共集群,由于业务众多,对业务的es查询语法缺少约束,导致问题频发。业务可能写了一个巨大的查询直接把集群打挂掉,但是

    2024年02月04日
    浏览(36)
  • 某手机大厂安卓framework开发面试机试经验分享

    hi,粉丝朋友们: 大家好!刚好现在处于一个金三银四的时间,很多同学都希望找个好的工作,这边刚好也有相关同学近期拿到了某手机大厂,具体啥大厂这里就不透露了,哈哈大家也很容易知道,需要机试的手机厂商就一两个,不给自己找麻烦,文章里面统一用某手机大厂

    2024年04月25日
    浏览(26)
  • 搜索引擎之概论(1),渣本逆袭大厂面经分享

    3、第三代搜索引擎 随着网络信息的迅速膨胀,用户希望能快速并且准确的查找到自己所要的信息,因此出现了第三代搜索引擎。相比前两代第三代搜索引擎更加注重个性化、专业化智能化使用自动聚类、分类等人工智能技术,采用区域智能识别及内容分析技术,利用人工介

    2024年04月28日
    浏览(23)
  • 自学Java怎么找工作?好程序员学员大厂面试经验分享!

    简历要详细: 简历中的项目用到的技术点和个人负责的模块尽量写详细一些。其次,根据自己项目中用到的熟悉的技术点,在个人技能介绍模块去突出,面试官基本会根据你简历上写的去提问的,这样我们回答起来就会更加得心应手。   百度面试总结: 每次面试完要及时去

    2024年02月04日
    浏览(53)
  • 【python】只需一段代码,剪辑一个视频——Moviepy详解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: clip = VideoFileClip(“videoplayback.mp4”).subclip(50,60) 这一段代码,能够在3秒内将videoplayback.mp4的50秒-60秒的视频片段提取出来,非常方便。

    2023年04月16日
    浏览(28)
  • 解决Github无法上传>100M文件——只需两行代码

    合作推广,分享一个人工智能学习网站。计划系统性学习的同学可以了解下,点击助力博主脱贫( •̀ ω •́ )✧ 废话不多说,如果在githubpush文件太大时,会报错:this exceeds GitHub’s file size limit of 100.00 MB ,如下图: 提示说明github最大文件限制是100M,此时需要撤回commit,在编

    2024年04月28日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包