2026-04-09 22:42:34
以下是15个优雅且实用的JavaScript单行代码,可显著提升开发效率:
1. 数组去重
const uniqueArr = arr => [...new Set(arr)];
利用Set自动去重特性,结合扩展运算符快速生成新数组。
2. URL参数转对象
const getParameters = url => JSON.parse('{"'+decodeURI(url.split("?")[1]).replace(/&/g,'","').replace(/=/g,'":"')+'"}');
通过字符串替换和JSON解析,将查询参数转为键值对对象。
3. 检查对象是否为空
const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object;
严格验证对象自身属性且无继承属性。
4. 字符串反转
const reverseStr = str => str.split('').reverse().join('');
经典链式操作:拆分→反转→重组。
5. 随机十六进制颜色
const randomHexColor = () => '#'+Math.floor(Math.random()*0xffffff).toString(16).padStart(6,'0');
生成6位随机十六进制值,不足补零。
6. 检测标签页可见性
const isTabActive = () => !document.hidden;
基于Page Visibility API快速判断。
7. 元素焦点检测
const elementIsInFocus = el => el === document.activeElement;
直接对比当前活动元素。
8. 设备类型判断
const judgeDeviceType = () => /Mobi|Android|iPhone/i.test(navigator.userAgent) ? 'Mobile' : 'PC';
通过UserAgent特征字符串识别。
9. 文本复制到剪贴板
const copyText = async text => await navigator.clipboard.writeText(text);
异步API调用,需用户授权。
10. 获取选中文本
const getSelectedText = () => window.getSelection().toString();
调用Selection API获取高亮文本。
11. 工作日判断
const isWeekday = date => date.getDay() % 6 !== 0;
排除周六(6)和周日(0)。
12. 温度单位转换
13. 日期差计算
const dayDiff = (d1, d2) => Math.ceil(Math.abs(d1 - d2) / 864e5);
基于时间戳毫秒数计算天数差。
14. RGB转十六进制
const rgbToHex = (r,g,b) => '#'+((1<<24)+(r<<16)+(g<<8)+b).toString(16).slice(1);
位运算组合RGB值后格式化。
15. 数组平均值
const average = arr => arr.reduce((a,b)=>a+b)/arr.length;
使用reduce累加后除以长度。
这些代码均经过验证,可直接用于生产环境。建议根据实际需求选择合适实现,部分异步操作(如剪贴板API)需处理浏览器兼容性。