38 个非常有用的 JavaScript 单行代码汇总

1.判断日期是否正确

此方法用于检查给定日期是否有效。

const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf());
isDateValid("December 27, 2022 13:14:00");  // true

2. 计算两个日期之间的间隔

此方法用于计算两个日期之间的间隔。

const dayDif = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000)
dayDif(new Date("2022-08-27"), new Date("2022-12-25"))  // 120

距离圣诞节还有 120 天。

3. 确定日期所在的一年中的哪一天

此方法用于检测给定日期所在的一年中的哪一天。

const dayOfYear = (date) => Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);
dayOfYear(new Date());   // 239

2022年已经过去了239天。

4.格式化时间

此方法可用于将时间转换为 hh:mm:ss 格式。

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

timeFromDate(new Date(2021, 11, 2, 12, 30, 0));  // 12:30:00
timeFromDate(new Date());  // now time 09:00:00

5.字符串的初始大写

此方法用于将字符串的第一个字母大写。

const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1)
capitalize("hello world")  // Hello world

6.翻转字符串

该方法用于翻转字符串并返回翻转后的字符串。

const reverse = str => str.split('').reverse().join('');
reverse('hello world');   // 'dlrow olleh'

7. 随机字符串

此方法用于生成随机字符串。

const randomString = () => Math.random().toString(36).slice(2);
randomString();

8. 字符串截断

此方法将字符串截断为指定长度。

const truncateString = (string, length) => string.length < length ? string : `${string.slice(0, length - 3)}...`;
truncateString('Hi, I should be truncated because I am too loooong!', 36)   // 'Hi, I should be truncated because...'

9. 从字符串中删除 HTML

此方法用于从字符串中删除 HTML 元素。

const stripHtml = html => (new DOMParser().parseFromString(html, 'text/html')).body.textContent || '';

10.从数组中删除重复项

删除重复元素是我们在数组中做的常见事情之一,这里有两种方法,根据情况选择使用。

1)、

const removeDuplicates = (arr) => [... .new Set(arr)];
console.log(removeDuplicates([1, 2, 2, 3, 3, 4, 4, 5, 5, 6]));

2)、

const num = [1,2,2,2,5,66,666,55,5]
const name = ["adarsh","gupta","adarsh","raj","ratesh","raj"]
const uniquenum = [... new Set(num)]
// [1,2,5,66,666,55]
const uniquenames = [... new Set(name)
// ["adarsh","gupta","raj","ratesh"]

11.判断数组是否为空

1)、使用 isArray 方法检查数组是否为空,并通过传递数组检查 Object.keys(arr) 的长度来确认它。

Object.keys() 方法返回给定对象自己的可枚举属性名称的数组,以与正常循环相同的顺序进行迭代。

const isArrayNotEmpty = (arr) => Array.isArray(arr) && 
Object.keys(arr).length > 0; // Examples
isArrayNotEmpty([]); // false
isArrayNotEmpty([1, 2, 3]); // true

2)、该方法用于判断一个数组是否为空数组,它返回一个布尔值。

const isNotEmpty = arr => Array.isArray(arr) && arr.length > 0;
isNotEmpty([1, 2, 3]);  // true

12.组合两个数组

可以使用以下两种方法来合并两个数组:

const merge = (a, b) => a.concat(b);
const merge = (a, b) => [. . a, . . b];

13.判断一个数是奇数还是偶数

此方法用于确定数字是奇数还是偶数。

const isEven = num => num % 2 === 0;
isEven(996);

14.得到一组数字的平均值

const average = (.. .args) => args.reduce((a, b) => a + b) / args.length;
average(1, 2, 3, 4, 5); // 3

15. 从两个整数中确定随机整数

此方法用于获取两个整数之间的随机整数。

const random = (min, max) => Math.floor(Math.random() * (max — min + 1) + min);
random(1, 50);

16.四舍五入到指定位数

此方法可用于将数字四舍五入到指定的数字。

const round = (n, d) => Number(Math.round(n + “e” + d) + “e-+ d)
round(1.005, 2) //1.01
round(1.555, 2) //1.56

17.RGB到十六进制转换机制

此方法可以将 RGB 颜色值转换为十六进制值。

const rgbToHex = (r, g, b) => "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
rgbToHex(255, 255, 255);  // '#ffffff'

18. 随机选择一种十六进制颜色

此方法用于获取随机的十六进制颜色值。

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

19.将内容复制到剪贴板

此方法使用 navigator.clipboard.writeText 将文本复制到剪贴板。

const copyToClipboard = (text) => navigator.clipboard.writeText(text);
copyToClipboard("Hello World");

20.删除所有cookies

该方法使用 document.cookie 访问 cookie 并清除网页上存储的所有 cookie。

const clearCookies = document.cookie.split(';').forEach(cookie => document.cookie = cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`));

21.检索选择的文本

该方法通过内置的 getSelection 属性获取用户选择的文本。

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

22.判断是否处于暗模式

该方法用于检测当前环境是否处于暗模式,它是一个布尔值。

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

23. 导航到页面顶部

此方法用于返回页面顶部。

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

24. 确定当前选项卡是否处于活动状态

此方法用于检查当前选项卡是否处于活动状态。

const isTabInView = () => !document.hidden;

25.判断当前设备是否为苹果设备

此方法用于检查当前设备是否为 Apple 设备。

const isAppleDevice = () => /Mac|iPod|iPhone|iPad/.test(navigator.platform);
isAppleDevice();

26. 是否滚动到页面底部

该方法用于判断页面是否在底部。

const scrolledToBottom = () => document.documentElement.clientHeight + window.scrollY >= document.documentElement.scrollHeight;

27. 重定向到一个 URL

此方法用于重定向到新 URL。

const redirect = url => location.href = url
redirect("https://www.google.com/")

28. 打开浏览器打印框

该方法用于打开浏览器的打印框。

const showPrintDialog = () => window.print()

29.生成随机字符串

有时可能会出现需要生成随机字符串的情况,请使用此代码片段来获取它。

const randomstr = Math.random().toString(36).substring(7)

由于在对浮点进行字符串化时会删除尾随零,因此它将生成 0 到 6 个字符之间的任何字符。

30.反转字符串

反转字符串从未如此简单,首先我们将其转换为数组(字符数组),现在我们反转该数组,然后将该数组转换为字符串。

使用这个单线来实现这一点:

const rev = (str) => str.split("").reverse().join("")

31.随机布尔值

此方法返回一个随机布尔值。使用 Math.random(),你可以得到一个 0-1 的随机数,并将它与 0.5 进行比较,有一半的概率得到一个真值或假值。

const randomBoolean = () => Math.random() >= 0.5;
randomBoolean();

32. 切换变量

可以使用以下形式交换两个变量的值,而无需应用第三个变量。

[foo, bar] = [bar, foo];

33. 获取变量的类型

该方法用于获取变量的类型。

const trueTypeOf = (obj) => Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
trueTypeOf(‘’); // string
trueTypeOf(0); // number
trueTypeOf(); // undefined
trueTypeOf(null); // null
trueTypeOf({}); // object
trueTypeOf([]); // array
trueTypeOf(0); // number
trueTypeOf(() => {}); // function

34.华氏到摄氏温度转换

此方法用于在摄氏度和华氏度之间进行转换。

const celsiusToFahrenheit = (celsius) => celsius * 9/5 + 32;
const fahrenheitToCelsius = (fahrenheit) => (fahrenheit — 32) * 5/9;
celsiusToFahrenheit(15); // 59
celsiusToFahrenheit(0); // 32
celsiusToFahrenheit(-20); // -4
fahrenheitToCelsius(59); // 15
fahrenheitToCelsius(32); // 0

35.检测对象是否为空

该方法用于检测 JavaScript 对象是否为空。

const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object;

36.打乱数组,返回一个数组

可以使用数学模块的随机方法对数组进行洗牌。

const shuffle = array => array.sort(() => 0.5-Math.random());
//output
shuffle([1,5,2,45])  
[5,2,1,25]

Math.random() 返回一个介于 0 和 1 之间的随机数。因此,如果它恰好给你一个小于 0.5 的数字,那么,你会得到一个负数,如果超过了,那么你会得到一个正数。

在此比较函数中选择 0.5 的原因是,如果从 0 和 1 的每个端点中减去 0.5,则会得到 -0.5 和 +0.5 的新范围,但不包括 +0.5,因为不包括原始 1 在 Math.random() 函数的结果中。

因此,当从这个范围返回一个随机数时,它是正数或负数的可能性几乎相等,有时它也会为零。

37.检测暗模式

在某些情况下,我们可能希望在激活暗模式时做一些额外的事情,使用这段代码来检查暗模式是打开还是关闭。

const isDark = window.matchMedia && window.matchMedia(`(prefers-color-scheme:dark)`).match

38.交换两个变量

下面的代码是在不使用第三个变量且仅使用一行代码的情况下交换两个变量的更简单方法之一。

[var1, var2] = [var2, var1];
一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2、时间类 2.1 短时间,形如 (13:04:06) 2.2 短日期,形如 (2003-12-05) 2.3 长时间,形如 (2003-12-05 13:04:06) 2.4 只有年和月。形如(2003-05,或者2003-5) 2.5 只有小时和分钟,形如(12:03) 3、表单类 3.1 所有的表单的值都不能为空 3.2 多行文本框的值不能为空。 3.3 多行文本框的值不能超过sMaxStrleng 3.4 多行文本框的值不能少于sMixStrleng 3.5 判断单选框是否选择。 3.6 判断复选框是否选择. 3.7 复选框的全选,多选,全不选,反选 3.8 文件上传过程中判断文件类型 4、字符类 4.1 判断字符全部由a-Z或者是A-Z的字字母组成 4.2 判断字符由字母和数字组成。 4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 4.4 字符串替换函数.Replace(); 5、浏览器类 5.1 判断浏览器的类型 5.2 判断ie的版本 5.3 判断客户端的分辨率 6、结合类 6.1 email的判断。 6.2 手机号码的验证 6.3 身份证的验证 二、功能类 1、时间与相关控件类 1.1 日历 1.2 时间控件 1.3 万年历 1.4 显示动态显示时钟效果(文本,如OA中时间) 1.5 显示动态显示时钟效果 (图像,像手表) 2、表单类 2.1 自动生成表单 2.2 动态添加,修改,删除下拉框中的元素 2.3 可以输入内容的下拉框 2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发送) 3、打印类 3.1 打印控件 4、事件类 4.1 屏蔽右键 4.2 屏蔽所有功能键 4.3 --> 和<-- F5 F11,F9,F1 4.4 屏蔽组合键ctrl+N 5、网页设计类 5.1 连续滚动的文字,图片(注意是连续的,两段文字和图片中没有空白出现) 5.2 html编辑控件类 5.3 颜色选取框控件 5.4 下拉菜单 5.5 两层或多层次的下拉菜单 5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏目) 5.7 状态栏,title栏的动态效果(例子很多,可以研究一下) 5.8 双击后,网页自动滚屏 6、树型结构。 6.1 asp+SQL版 6.2 asp+xml+sql版 6.3 java+sql或者java+sql+xml 7、无边框效果的制作 8、连动下拉框技术 9、文本排序 10,画图类,含饼、柱、矢量贝滋曲线 11,操纵客户端注册表类 12,DIV层相关(拖拽、显示、隐藏、移动、增加) 13,TABLAE相关(客户端动态增加行列,模拟进度条,滚动列表等) 14,各种<object classid=>相关类,如播放器,flash与脚本互动等 16, 刷新/模拟无刷新 异步调用类(XMLHttp或iframe,frame)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值