尝试一行代码解决一个问题

488 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。

查找某个日期位于一年中第几天

关于日期的需求总是层出不穷呐,今天这个需求再次刷新我的小脑袋,终于找到一个合适的办法来解决:

const yearNum = (date) => Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);

yearNum(new Date());

image.png

计算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"))

image.png

英文字符串首字母自动大写

const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1)
    
capitalize("hello, world")

image.png

获取浏览器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());

image.png

数组去重

老生常谈的问题

const arrSingle = (arr) => [...new Set(arr)];
    
console.log(arrSingle([1, 2, 2, 2, 4, 4, 5, 5, 6]));

image.png

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);

image.png

回到顶部

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)