JS小技巧
数组去重
let newArr = (arr) => [...new Set(arr)] console.log(newArr(['js', 'html', 'js', 'css', 'css'])); // ["js", "html", "css"]
获取URL的参数转为对象
let getObj = url => JSON.parse( `{"${decodeURI(url.split("?")[1]).replace(/&/g, '","').replace(/=/g, '":"')}"}` ) console.log(getObj("https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=monline_3_dg")); // {ie: "utf-8", f: "3", rsv_bp: "1", rsv_idx: "1", tn: "monline_3_dg"}
检测对象是否为空
let obj1 = {} console.log(obj1 == {}); // false let isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object; console.log(isEmpty(obj1)); // true let obj2 = {name: "zs"} console.log(isEmpty(obj2)); // false
反转字符串
let reverseStr = str => str.split('').reverse().join(''); console.log(reverseStr('tpircSavaJ olleh')); // hello JavaScript
生成随机十六进制颜色
const randomColor = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`
console.log(randomColor()); // #ab8056
获取两日期之间相差的天数
const dayDiff = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000); console.log(dayDiff(new Date("2022-9-1"), new Date("2022-11-13"))); // 74
检查设备类型
const judgeDeviceType = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|OperaMini/i.test(navigator.userAgent) ? 'Mobile' : 'PC'; console.log(judgeDeviceType()); // PC | Mobile
计算数组平均值
const average = (arr) => arr.reduce((a, b) => a + b) / arr.length;
console.log(average([23, 10, 86, 49])); // 42
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了