7个杀手级的JS一行代码

JavaScript是网络开发中最关键的支柱。

这篇文章包含了由无菌手套手工挑选的代码片段,并放置在一个绸缎枕头上。
一个由50人组成的团队检查了这些代码,并确保其在发布前处于高度抛光状态。我们来自瑞士的文章发布专家点燃了一支蜡烛,当他将代码输入金钱所能买到的最好的镶金键盘时,人群中一片嘘声。
我们都有一个美妙的庆祝活动,整个聚会沿着街道行进到咖啡馆,整个加尔各答镇都向文章发布到网上时挥手致意 "一路顺风!"。

祝您阅读愉快!

数组乱序

在使用需要某种程度的随机化的算法时,你会经常发现洗牌数组是一个相当必要的技能。下面的片段以O(n log n)的复杂度对一个数组进行就地洗牌。

const shuffleArray = (arr) => arr.sort(() => Math.random() - 0.5) 。
// 测试
const 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)。
// 测试
copyToClipboard("Hello World!")。

注意:根据caniuse,该方法对93.08%的全球用户有效。所以必须检查用户的浏览器是否支持该API。为了支持所有用户,你可以使用一个输入并复制其内容。

数组去重

每种语言都有自己的哈希列表的实现,在JavaScript中,它被称为Set。你可以使用Set数据结构轻松地从一个数组中获得唯一元素。

const getUnique = (arr) => [...new Set(arr)]。
// 测试
const arr = [1, 1, 2, 3, 3, 4, 4, 5, 5];
console.log(getUnique(arr))。

检测黑暗模式

随着黑暗模式的普及,如果用户在他们的设备中启用了黑暗模式,那么将你的应用程序切换到黑暗模式是非常理想的。幸运的是,可以利用媒体查询来使这项任务变得简单。

const isDarkMode = () =>
  window.matchMedia &&
  window.matchMedia("(prefers-color-scheme: dark)").matches。
// 测试
console.log(isDarkMode())。

根据caniuse的数据,matchMedia的支持率为97.19%。

滚动到顶部

初学者经常发现自己在正确滚动元素的过程中遇到困难。最简单的滚动元素的方法是使用scrollIntoView方法。添加行为。"smooth "来实现平滑的滚动动画。

const scrollToTop = (element) =>
  element.scrollIntoView({ behavior: "smooth", block: "start" })。

滚动到底部

就像scrollToTop方法一样,scrollToBottom方法也可以用scrollIntoView方法轻松实现,只需将块值切换为结束即可

const scrollToBottom = (element) =>
  element.scrollIntoView({ behavior: "smooth", block: "end" })。

生成随机颜色

你的应用程序是否依赖随机颜色的生成?不用再看了,下面的代码段可以满足你的要求

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

关注我,了解科技领域的每周新资讯
需要一个评级最高的前端开发自由职业者来解决你的开发问题?请在Upwork上联系我
想看看我在做什么?请查看我的个人网站GitHub
想联系我吗?请在LinkedIn上与我联系
我是一个自由职业者,将在2022年中期开始作为一个数字游牧者。想了解我的旅程吗?在Instagram上关注我

Github 是 [链接]

4.2k 声望
441 粉丝
0 条评论
推荐阅读
从 JavaScript 迁移到 TypeScript
我作为一名 JavaScript 开发人员已经很多年了,我并没有太多打算跳出我的技术堆栈。我告诉自己,坚持你已经知道的东西和尝试学习太多的编程语言可能会让人望而生畏。

chatgpt1阅读 1.7k

ESlint + Stylelint + VSCode自动格式化代码(2023)
安装插件 ESLint,然后 File -> Preference-> Settings(如果装了中文插件包应该是 文件 -> 选项 -> 设置),搜索 eslint,点击 Edit in setting.json

谭光志34阅读 20.8k评论 9

安全地在前后端之间传输数据 - 「3」真的安全吗?
在「2」注册和登录示例中,我们通过非对称加密算法实现了浏览器和 Web 服务器之间的安全传输。看起来一切都很美好,但是危险就在哪里,有些人发现了,有些人嗅到了,更多人却浑然不知。就像是给门上了把好锁,还...

边城32阅读 7.3k评论 5

封面图
涨姿势了,有意思的气泡 Loading 效果
今日,群友提问,如何实现这么一个 Loading 效果:这个确实有点意思,但是这是 CSS 能够完成的?没错,这个效果中的核心气泡效果,其实借助 CSS 中的滤镜,能够比较轻松的实现,就是所需的元素可能多点。参考我们...

chokcoco24阅读 2.3k评论 3

你可能不需要JS!CSS实现一个计时器
CSS现在可不仅仅只是改一个颜色这么简单,还可以做很多交互,比如做一个功能齐全的计时器?样式上并不复杂,主要是几个交互的地方数字时钟的变化开始、暂停操作重置操作如何仅使用 CSS 来实现这样的功能呢?一起...

XboxYan25阅读 1.7k评论 1

封面图
在前端使用 JS 进行分类汇总
最近遇到一些同学在问 JS 中进行数据统计的问题。虽然数据统计一般会在数据库中进行,但是后端遇到需要使用程序来进行统计的情况也非常多。.NET 就为了对内存数据和数据库数据进行统一地数据处理,发明了 LINQ (L...

边城17阅读 2k

封面图
过滤/筛选树节点
又是树,是我跟树杠上了吗?—— 不,是树的问题太多了!🔗 相关文章推荐:使用递归遍历并转换树形数据(以 TypeScript 为例)从列表生成树 (JavaScript/TypeScript) 过滤和筛选是一个意思,都是 filter。对于列表来...

边城18阅读 7.8k评论 3

封面图

Github 是 [链接]

4.2k 声望
441 粉丝
宣传栏