小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。
查找某个日期位于一年中第几天
关于日期的需求总是层出不穷呐,今天这个需求再次刷新我的小脑袋,终于找到一个合适的办法来解决:
const yearNum = (date) => Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);
yearNum(new Date());
计算2个日期之间相差多少天
又是一个关于日期的:
const dayDistance = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000)
dayDistance(new Date("2021-10-21"), new Date("2021-10-31"))
英文字符串首字母自动大写
const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1)
capitalize("hello, world")
获取浏览器Cookie的值
document.cookie 来查找cookie值
const cookie = name => `; ${document.cookie}`.split(`; ${name}=`).pop().split(';').shift();
清除全部Cookie
我们在需要清除网页中存储的所有cookie的时候可以使用document.cookie访问cookie并将其清除:
const clearCookies = document.cookie.split(';').forEach(cookie => document.cookie = cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`));
生成随机十六进制颜色
Math.random 和 padEnd 属性可以生成随机的十六进制颜色
const color = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;
console.log(color());
数组去重
老生常谈的问题
const arrSingle = (arr) => [...new Set(arr)];
console.log(arrSingle([1, 2, 2, 2, 4, 4, 5, 5, 6]));
h5页面地址查询参数
const getParams = Object.fromEntries(new URLSearchParams(window.location.search))
求数字的平均值
const average = (...args) => args.reduce((a, b) => a + b) / args.length;
average(1, 2, 3, 4, 5, 6);
回到顶部
const goTop = () => window.scrollTo(0, 0);
goTop();
检验数组是否为空
const isEmpty = arr => Array.isArray(arr) && arr.length > 0;
isEmpty([1, 2, 3]); // true
isEmpty([]); // false
检查用户的设备是否处于暗模式
const isDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
console.log(isDark)