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

 

posted on   咿呀喲  阅读(15)  评论(0编辑  收藏  举报

(评论功能已被禁用)
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示