【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

JavaScript 中的 7 个“杀手级”单行代码

  • 2022-03-08
  • 本文字数:1100 字

    阅读完需:约 4 分钟

JavaScript 中的 7 个“杀手级”单行代码

能在本文中出场的代码全部都经过了仔细的甄选,在文章发布前,50 人的团队对所有代码都进行了认真的检验,以确保其符合“杀手级”资格,本文的目的就是希望为开发者带来一些便利。

数组洗牌

当代码需要一定程度的随机性时,数组洗牌是个很必要的技能。下面的这行代码可以以 O(n log n)的复杂度,原地对数组洗牌。

 

const shuffleArray = (arr) => arr.sort(() => Math.random() - 0.5);// Testingconst arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];console.log(shuffleArray(arr));
复制代码

复制到剪贴板

在 Web 应用中,“复制到剪贴板”这项功能迅速流行起来,因为这对用户而言非常方便。

 

const copyToClipboard = (text) =>  navigator.clipboard?.writeText && navigator.clipboard.writeText(text);// TestingcopyToClipboard("Hello World!");
复制代码

 

注:据 caniuse显示,这行代码对全球 93.08%的用户都有效。记得在添加之前检查下用户的浏览器是否支持这个 API。如果想要万全的方法,那么建议使用 input,然后复制其内容。

唯一元素

每一种语言都有其自己的哈希表实现,在 JavaScript 中是 set。使用这个数据结构可以很轻松地找到列表中的唯一元素。

 

const getUnique = (arr) => [...new Set(arr)];// Testingconst arr = [1, 1, 2, 3, 3, 4, 4, 4, 5, 5];console.log(getUnique(arr));
复制代码

检测深色模式

夜间模式也是最近大火的功能之一。如果用户设备启用了深色模式,那么应用最好是能自动切换到该模式。而 media queries 可以帮你轻松完成这项任务。

 

const isDarkMode = () =>  window.matchMedia &&  window.matchMedia("(prefers-color-scheme: dark)").matches;// Testingconsole.log(isDarkMode());
复制代码

 

同样,据 caniuse 显示,97.19%的用户设备支持 matchMedia 函数。

滚动到顶部

JavaScript 的初学者常常会发现很难将页面元素正确地滚动到视图中。最简单方式是用 scrollIntoView 方法,然后加上 behavior: "smooth" 实现平滑的滚动动画。

 

const scrollToTop = (element) =>  element.scrollIntoView({ behavior: "smooth", block: "start" });
复制代码

滚动到底部

和 scrollToTop 方法类似,scrollToBottom 方法可以轻松使用 scrollIntoView 实现,唯一的区别就是把 block 的值改成 end 。

 

const scrollToBottom = (element) =>  element.scrollIntoView({ behavior: "smooth", block: "end" });
复制代码

 

生成随机颜色

你的应用程序依赖了随机颜色生成吗?哈,那你可找对了地方!

 

const generateRandomHexColor = () =>  `#${Math.floor(Math.random() * 0xffffff).toString(16)}`;
复制代码

 

原文链接:


https://tapajyoti-bose.medium.com/7-killer-one-liners-in-javascript-33db6798f5bf

2022-03-08 10:296030

评论

发布
暂无评论
发现更多内容

系统性能百倍提升典型案例分析:高性能队列Disruptor,linux服务器架构师

Java 程序员 后端

绝了!你一直想要的数据库界的里程碑,Alibaba技术官内部私藏MySQL笔记

Java 程序员 后端

老大让我优化数据库,我上来就分库分表,他过来就是一jio

Java 程序员 后端

终于彻底搞清楚了 MySQL spin-lock 之一次CPU问题定位过程总结

Java 程序员 后端

老板,运维和开发又打起来了!,你连基础的JVM运行时内存布局都忘了

Java 程序员 后端

聚焦WAVE SUMMIT 2021,大咖齐聚共研深度学习,关于线程池的五种实现方式

Java 程序员 后端

脉脉上瞬间爆火的Java高级面试题被全网封杀,这套资源到底有什么魅力?

程序员 后端

线上环境大规模RocketMQ集群不停机优雅升级实践,面试字节跳动Java工程师该怎么准备

Java 程序员 后端

[ CloudWeGo 微服务实践 - 04 ] 尝试操作数据(1)

baiyutang

golang 微服务 10月月更

网页制作工具之------Dreamweaver界面,springmvc教程下载

Java 程序员 后端

聊聊MySQL主从复制的几种复制方式,上岸蚂蚁金服

Java 程序员 后端

缓存穿透及解决方案(干货篇),java基础入门第二版第二章答案

Java 程序员 后端

网络协议从入门到底层原理(5)传输层,java编程项目实例教程

Java 程序员 后端

美团二面:聊聊线程池设计与原理,由表及里趣味解析,linux操作系统实用教程课后答案

Java 程序员 后端

老生常谈:MySQL高可用,java泛型原理

Java 程序员 后端

绝杀!3位阿里大牛发布这份800页MySQL性能优化法则笔记

Java 程序员 后端

老夫面试两个月真实经历:面试了20家大厂之后,发现这样介绍项目经验

Java 程序员 后端

聚焦WAVE SUMMIT 2021,大咖齐聚共研深度学习(1),java在大数据技术中的运用

Java 程序员 后端

终于等到了!十位Java架构师整理的“阿里P7,看完老板哭着让我留下来

Java 程序员 后端

网络协议从入门到底层原理(11)网络爬虫,线程池底层实现原理

Java 程序员 后端

网络编程六-网络编程相关面试题汇总,nginx运行原理

Java 程序员 后端

聊聊多线程(四)线程安全之AtomicInteger类,最全面试考点与面试技巧

Java 程序员 后端

肝完这份Linux网络编程笔记,感觉2年开发白干了,nginx反向代理原理转发过程

Java 程序员 后端

终于彻底搞清楚了 MySQL spin-lock 之一次CPU问题定位过程总结(1)

Java 程序员 后端

网关性能大PK,Spring Cloud Gateway让人大失所望!,java教程pdf百度云下载

Java 程序员 后端

老面试官问我:LRU 和 Innodb Buffer Pool 有什么关系?

Java 程序员 后端

聊聊RabbitMQ RabbitMQ相关面试题,kafka入门教程步骤

Java 程序员 后端

聊聊多线程(一)线程的基础,linux集群架构师

Java 程序员 后端

脑筋急转弯:如何用两个栈实现一个队列?用两个队列实现一个栈(1)

Java 程序员 后端

群晖DS218+做maven私服(nexus3),mysql性能调优

Java 程序员 后端

聊聊MyBatis的历史,mysql原理详解

Java 程序员 后端

JavaScript 中的 7 个“杀手级”单行代码_文化 & 方法_Tapajyoti Bose_InfoQ精选文章