拯救生命的 JavaScript 单行程序(续篇)
JavaScript之禅
共 2193字,需浏览 5分钟
·
2021-12-19 15:45
☝点击上方蓝字关注我们,过早的优化是罪恶之源。🧑💻
在上一篇文章,我展示 17 个用于 DOM、数组、对象操作的 JavaScript 单行程序。在本文中,我将继续介绍一些用于字符串、日期处理以及其他一些有用的单行程序。
查看上一篇文章:17 个拯救生命的 JavaScript 单行程序
1、检查路径是不是相对路径
const isRelative = (path) => !/^([a-z]+:)?[\\/]/i.test(path);
// Examples
isRelative('/foo/bar/baz'); // false
isRelative('C:\\foo\\bar\\baz'); // false
isRelative('foo/bar/baz.txt'); // true
isRelative('foo.md'); // true
在 nodejs 中你也可以用 path.isAbsolute(path)
来判断是不是绝对路径
2、将字符串的首字母小写
const lowercaseFirst = (str) => `${str.charAt(0).toLowerCase()}${str.slice(1)}`;
// Example
lowercaseFirst('Hello World'); // 'hello World'
3、 检查字符串是否为十六进制颜色
const isHexColor = (color) => /^#([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i.test(color);
// Examples
isHexColor('#012'); // true
isHexColor('#A1B2C3'); // true
isHexColor('012'); // false
isHexColor('#GHIJKL'); // false
4、给一个时间添加"am/pm"后缀
// `h` 是小时,0 - 23
const suffixAmPm = (h) => `${h % 12 === 0 ? 12 : h % 12}${h < 12 ? 'am' : 'pm'}`;
// Examples
suffixAmPm(0); // '12am'
suffixAmPm(5); // '5am'
suffixAmPm(12); // '12pm'
suffixAmPm(15); // '3pm'
suffixAmPm(23); // '11pm'
5、计算两个日期之间的间隔天数
const diffDays = (date, otherDate) => Math.ceil(Math.abs(date - otherDate) / (1000 * 60 * 60 * 24));
// Example
diffDays(new Date('2014-12-19'), new Date('2020-01-01')); // 1839
6、检查日期是否有效
const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf());
isDateValid("December 17, 1995 03:24:00"); // true
7、检查代码是否在 Node.js 中运行
const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;
8、检查代码是否在浏览器中运行
const isBrowser = typeof window === 'object' && typeof document === 'object';
9、将 URL 参数转换为对象
const getUrlParams = query =>
Array.from(new URLSearchParams(query)).reduce(
(p, [k, v]) => ({
...p,
[k]: p[k] ? (Array.isArray(p[k]) ? p[k] : [p[k]]).concat(v) : v,
}),
{},
);
// Examples
getUrlParams(location.search);
getUrlParams('foo=Foo&bar=Bar'); // { foo: "Foo", bar: "Bar" }
// Duplicate key
getUrlParams('foo=Foo&foo=Fuzz&bar=Bar'); // { foo: ["Foo", "Fuzz"], bar: "Bar" }
10、检测暗黑模式
const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
11、复制到剪贴板
const copyToClipboard = (text) => navigator.clipboard.writeText(text);
// 示例
copyToClipboard("Hello World");
12、将 RGB 转换为十六进制
const rgbToHex = (r, g, b) => "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1) ;
// 示例
rgbToHex(0, 51, 255); // #0033ff
13、生成随机十六进制颜色
const randomColor = () => `#${Math.random().toString(16).slice(2, 8).padEnd(6, '0')}`;
// 或者
const randomColor = () => `#${(~~(Math.random() * (1 << 24))).toString(16)}`;
14、生成随机 IP 地址
const randomIp = () => Array(4).fill(0)
.map((_, i) => Math.floor(Math.random() * 255) + (i === 0 ? 1 : 0) )
.join('.');
// 示例
randomIp(); // 175.89.174.131
15、使用 Node 加密模块生成随机字符串
const randomStr = () => require('crypto').randomBytes(32).toString('hex');
本文完。❝亲爱的读者,
感谢你的时间。我们下期再见!
如果你在评论区留下的想法,我会十分高兴。
❞
往期精彩回顾:
关注公众号回复【资源】可免费领取学习资料!
左手代码右手砖,抛砖引玉
记得点赞,分享,在看加关注哟
评论