网易首页 > 网易号 > 正文 申请入驻

20 个实用的 JavaScript 单行代码

0
分享至

推荐大家关注一个公众号

后台回复“大礼包”有惊喜礼包!

日英文

Tired heart is always hovering between adhering to and giving up, indecisive. Trouble is that memory is good, the mind should not mind will stay in memory.

心累,就是常常徘徊在坚持和放弃之间,举棋不定。烦恼,就是记性太好,该记的,不该记的都会留在记忆里。

每日掏心话

成熟,不是你绷起脸,显得多么老道;不是你知道多少大是大非,懂得多少大道理,而是你能理解身边发生的小事都可能有它的不得已。

责编:乐乐 | 来自:JenK 链接:segmentfault.com/a/1190000040721650

往日回顾:

正文


大家好,我是小乐。

本文整理了一些实用的 JavaScript 单行代码,非常好用~~

获取浏览器Cookie的值

通过document.cookie来查找cookie

const cookie = name => `; ${document.cookie}`.split(`; ${name}=`).pop().split(';').shift();

cookie('_ga');
// Result: "GA1.2.1929736587.1601974046"

颜色RGB转十六进制const rgbToHex = (r, g, b) => "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);

rgbToHex(0, 51, 255);
// Result: #0033ff

复制到剪贴板

借助navigator.clipboard.writeText可以很容易的讲文本复制到剪贴板

规范要求在写入剪贴板之前使用 Permissions API 获取“剪贴板写入”权限。但是,不同浏览器的具体要求不同,因为这是一个新的API。有关详细信息,请查看compatibility table and Clipboard availability in Clipboard。
const copyToClipboard = (text) => navigator.clipboard.writeText(text);

copyToClipboard("Hello World");

检查日期是否合法

使用以下代码段检查给定日期是否有效。

const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf());

isDateValid("December 17, 1995 03:24:00");
// Result: true

查找日期位于一年中的第几天const dayOfYear = (date) =>
Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);

dayOfYear(new Date());
// Result: 272

英文字符串首字母大写

Javascript没有内置的首字母大写函数,因此我们可以使用以下代码。

const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1)

capitalize("follow for more")
// Result: Follow for more

计算2个日期之间相差多少天const dayDif = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000)

dayDif(new Date("2020-10-21"), new Date("2021-10-22"))
// Result: 366

清除全部Cookie

通过使用document.cookie访问cookie并将其清除,可以轻松清除网页中存储的所有cookie。

const clearCookies = document.cookie.split(';').forEach(cookie => document.cookie = cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`));
生成随机十六进制颜色

可以使用Math.randompadEnd属性生成随机的十六进制颜色。

搜索公众号前端技术精选回复“手册”,送你一份惊喜礼包。

const randomHex = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;

console.log(randomHex());
// Result: #92b008

数组去重

可以使用 JavaScript 中的Set轻松删除重复项

const removeDuplicates = (arr) => [...new Set(arr)];

console.log(removeDuplicates([1, 2, 3, 3, 4, 4, 5, 5, 6]));
// Result: [ 1, 2, 3, 4, 5, 6 ]

从 URL 获取查询参数

可以通过传递window.location或原始 URLgoole.com?search=easy&page=3轻松地从 url 检索查询参数

const getParameters = (URL) => {
URL = JSON.parse(
'{"' +
decodeURI(URL.split("?")[1])
.replace(/"/g, '\\"')
.replace(/&/g, '","')
.replace(/=/g, '":"') +
'"}'
return JSON.stringify(URL);

getParameters(window.location);
// Result: { search : "easy", page : 3 }

或者更为简单的:

Object.fromEntries(new URLSearchParams(window.location.search))
// Result: { search : "easy", page : 3 }
时间处理

我们可以从给定日期以hour::minutes::seconds格式记录时间。

const timeFromDate = date => date.toTimeString().slice(0, 8);

console.log(timeFromDate(new Date(2021, 0, 10, 17, 30, 0)));
// Result: "17:30:00"

校验数字是奇数还是偶数const isEven = num => num % 2 === 0;

console.log(isEven(2));
// Result: True

求数字的平均值

使用reduce方法找到多个数字之间的平均值。

const average = (...args) => args.reduce((a, b) => a + b) / args.length;

average(1, 2, 3, 4);
// Result: 2.5

回到顶部

可以使用window.scrollTo(0, 0)方法自动滚动到顶部。将xy都设置为 0。

const goToTop = () => window.scrollTo(0, 0);

goToTop();

翻转字符串

可以使用splitreversejoin方法轻松反转字符串。

const reverse = str => str.split('').reverse().join('');

reverse('hello world');
// Result: 'dlrow olleh'

校验数组是否为空

一行代码检查数组是否为空,将返回truefalse

const isNotEmpty = arr => Array.isArray(arr) && arr.length > 0;

isNotEmpty([1, 2, 3]);
// Result: true

获取用户选择的文本

使用内置的getSelection属性获取用户选择的文本。

const getSelectedText = () => window.getSelection().toString();

getSelectedText();

打乱数组

可以使用sortrandom方法打乱数组

const shuffleArray = (arr) => arr.sort(() => 0.5 - Math.random());

console.log(shuffleArray([1, 2, 3, 4]));
// Result: [ 1, 4, 3, 2 ]

检查用户的设备是否处于暗模式

使用以下代码检查用户的设备是否处于暗模式。

const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches

console.log(isDarkMode)
// Result: True or False

你还有什么想要补充的吗?

PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。


版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

欢迎加入后端架构师,在后台回复“”即可。

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。

别找了,想获取史上最简单的Java大厂面试题学习资料

扫下方二维码回复「面试」就好了

嘿,你在看吗?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
御姐风!太高级!要不起的感觉

御姐风!太高级!要不起的感觉

梧州生活宝
2024-05-22 23:14:03
澳大利亚口出狂言:月球是人类的共同财产,中国必须把月壤共享

澳大利亚口出狂言:月球是人类的共同财产,中国必须把月壤共享

电动猫
2024-06-15 21:40:18
人民日报:忙起来,就没那么多迷茫了,只要不懈怠,日子就有奔头

人民日报:忙起来,就没那么多迷茫了,只要不懈怠,日子就有奔头

十三级台阶
2024-06-15 19:29:05
世道如此之坏!

世道如此之坏!

吴女士
2024-06-16 13:33:32
蔡斌回应朱婷伤病,袁心玥作检讨,王媛媛情商高,张常宁一战拾名

蔡斌回应朱婷伤病,袁心玥作检讨,王媛媛情商高,张常宁一战拾名

跑者排球视角
2024-06-16 07:26:01
刘和平:开出俄乌停火谈判的条件后, 普京手中还剩几张牌?

刘和平:开出俄乌停火谈判的条件后, 普京手中还剩几张牌?

直新闻
2024-06-15 23:13:39
英国首相苏纳克和他的鞋,英国民众盯着他的脚不放了

英国首相苏纳克和他的鞋,英国民众盯着他的脚不放了

好笑娱乐君每一天
2024-06-16 08:51:39
100个代表团与会,1000多万美元的开销

100个代表团与会,1000多万美元的开销

寰宇大观察
2024-06-15 15:45:20
75英寸电视都不香了 中国人狂买86/98/100英寸等巨幕电视

75英寸电视都不香了 中国人狂买86/98/100英寸等巨幕电视

快科技
2024-06-14 17:37:07
赢土耳其后,李盈莹、张常宁、蔡斌的采访,话里都有话

赢土耳其后,李盈莹、张常宁、蔡斌的采访,话里都有话

真理是我亲戚
2024-06-16 10:28:13
一颗子弹别想运进台湾!美国军火马上就到,大陆早已准备海上拦截

一颗子弹别想运进台湾!美国军火马上就到,大陆早已准备海上拦截

小阿文热点军
2024-06-15 19:13:11
菲军接到任务,对华称呼已变,中方舰队拉包围圈,仙宾礁对抗升级

菲军接到任务,对华称呼已变,中方舰队拉包围圈,仙宾礁对抗升级

说天说地说实事
2024-06-15 20:02:53
乌克兰和平峰会、美俄核潜艇“对视”,都是俄乌冲突背景音乐!

乌克兰和平峰会、美俄核潜艇“对视”,都是俄乌冲突背景音乐!

新民周刊
2024-06-16 09:09:58
第一次性生活有多痛?进不去怎么办

第一次性生活有多痛?进不去怎么办

喜马拉雅主播暮霭
2024-06-12 09:53:49
大暴雨!冰雹!8级雷暴大风!首个山洪红色预警!气象部门紧急提醒→

大暴雨!冰雹!8级雷暴大风!首个山洪红色预警!气象部门紧急提醒→

鲁中晨报
2024-06-16 14:43:05
教育部不批准福耀科技大学,却批准西湖大学,属实非常正确!

教育部不批准福耀科技大学,却批准西湖大学,属实非常正确!

咖啡店的老板娘
2024-06-13 21:17:16
火箭要吃回头草,已经秘密接触有望提前达成口头协议!

火箭要吃回头草,已经秘密接触有望提前达成口头协议!

小鬼头体育
2024-06-16 16:30:09
17岁身价上亿?亚马尔1年前15岁0身价,如今16岁已涨至9000万

17岁身价上亿?亚马尔1年前15岁0身价,如今16岁已涨至9000万

直播吧
2024-06-16 11:01:22
魔术有能力给克莱提供3年8190万的合同 预计要高于勇士的报价

魔术有能力给克莱提供3年8190万的合同 预计要高于勇士的报价

直播吧
2024-06-16 17:43:06
贵州卫生系统大美女发迹史披露,最后露面照流出,知情者披露隐情

贵州卫生系统大美女发迹史披露,最后露面照流出,知情者披露隐情

求实者
2024-06-16 15:02:54
2024-06-16 20:32:49
程序员小乐
程序员小乐
有趣有内涵
3163文章数 9493关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

凯特王妃患癌后首次露面 小王子跳舞抢镜被姐姐制止

头条要闻

凯特王妃患癌后首次露面 小王子跳舞抢镜被姐姐制止

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

本地
时尚
教育
旅游
亲子

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

建议中年男人:包包尽量别背“LV、Gucci”,换成另外3种更有格调

教育要闻

南医大被罚老师因救人迟到受处分 校方第二天删除通告 律师发话

旅游要闻

@毕业生,江苏这些景区可享免票或优惠

亲子要闻

原来你是这样的爸爸!

无障碍浏览 进入关怀版