1随机获取布尔值
const getRandomBoolean = () => Math.random() >= 0.5;
2.时间相关
2.1检查日期是否为周末
const isWeekend = (date) => [0, 6].indexOf(date.getDay()) !== -1;
console.log(isWeekend(new Date(2021, 4, 14)));// false (Friday)
console.log(isWeekend(new Date(2021, 4, 15)));// true (Saturday)
2.2.计算两个日期之间的天数
const daysDiff = (date, date2) => Math.ceil(Math.abs(date - date2) / 86400000);
console.log(daysDiff(new Date('2021-05-10'), new Date('2021-11-25')));// 199
2.3从给定日期以 hour::minutes::seconds 格式记录时间。
const timeFromDate = date => date.toTimeString().slice(0, 8);
console.log(timeFromDate(new Date(2021, 0, 10, 17, 30, 0))); "17:30:00"
2.4查找日期位于一年中的第几天
const dayOfYear = (date) => Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);
dayOfYear(new Date());//272
3.数字相关
3.1检查数字是偶数还是奇数
const isEven = (num) => num % 2 === 0;
console.log(isEven(5));// false
console.log(isEven(4));// true
3.2.在两个数字之间生成一个随机数
const random = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);
console.log(random(1, 50));
4.字符串相关
4.1.生成随机字符串(唯一ID?)
const randomString = () => Math.random().toString(36).slice(2);
console.log(randomString());
4.2.英文字符串首字母大写
const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1);
capitalize("follow for more");Follow for more
5.DOM操作
5.1滚动到页面顶部
const scrollToTop = () => window.scrollTo(0, 0);
scrollToTop();
6.数组相关
6.1.# 打乱数组
const shuffleArray = (arr) => arr.sort(() => 0.5 - Math.random());
console.log(shuffleArray([1, 2, 3, 4]));//[ 1, 4, 3, 2 ]
6.2校验数组是否不为空
const isNotEmpty = arr => Array.isArray(arr) && arr.length > 0;
isNotEmpty([1, 2, 3]);// true
6.3.# 求数字的平均值
const average = (...args) => args.reduce((a, b) => a + b) / args.length;
average(1, 2, 3, 4);//2.5
8.选中复制操作
8.1.将文字复制到剪贴板
需要添加检查以查看是否存在navigator.clipboard.writeText
const copyTextToClipboard = async (text) => {
await navigator.clipboard.writeText(text);
};
8.2.获取用户选择的文本
使用内置的getSelection 属性获取用户选择的文本。
const getSelectedText = () => window.getSelection().toString();
getSelectedText();
9.获取javascript语言的实际类型
const trueTypeOf = (obj) => Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
console.log(trueTypeOf(''));// string
console.log(trueTypeOf(0));// number
console.log(trueTypeOf());// undefined
console.log(trueTypeOf(null));// null
console.log(trueTypeOf({}));// object
console.log(trueTypeOf([]));// array
console.log(trueTypeOf(0));// number
console.log(trueTypeOf(() => {}));// function
10.浏览器相关
10.1检查当前选项卡是否在视图/焦点内
const isTabInView = () => !document.hidden;
isTabInView();
10.2.获取浏览器Cookie的值
通过document.cookie 来查找cookie值
const cookie = name => `; ${document.cookie}`.split(`; ${name}=`).pop().split(';').shift();
cookie('_ga');// Result: "GA1.2.1929736587.1601974046"
10.3从 URL 获取查询参数
const getParameters = (URL) => {
URL = JSON.parse(
'{"' +
decodeURI(URL.split("?")[1])
.replace(/"/g, '\"')
.replace(/&/g, '","')
.replace(/=/g, '":"') +
'"}'
);
return JSON.stringify(URL);
};
getParameters(window.location);// { search : "easy", page : 3 }
或者更为简单的:
Object.fromEntries(new URLSearchParams(window.location.search));//{ search : "easy", page : 3 }
11.设备相关
11.1 检查用户是否在Apple设备上
const isAppleDevice = () => /Mac|iPod|iPhone|iPad/.test(navigator.platform);\
console.log(isAppleDevice);// true/false
11.2 检查用户的设备是否处于暗模式
检查用户的设备是否处于暗模式。
const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
console.log(isDarkMode) //True or False
13 颜色
13.1颜色RGB转十六进制
const rgbToHex = (r, g, b) => "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
rgbToHex(0, 51, 255); // Result: #0033ff
13.2.# 生成随机十六进制颜色
const randomHex = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;
console.log(randomHex());// Result: #92b008