实用代码片段

381 阅读2分钟

1随机获取布尔值

const getRandomBoolean = () => Math.random() >= 0.5;

2.时间相关

2.1检查日期是否为周末

const isWeekend = (date) => [06].indexOf(date.getDay()) !== -1;
console.log(isWeekend(new Date(2021414)));// false (Friday)
console.log(isWeekend(new Date(2021415)));// 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(08);
console.log(timeFromDate(new Date(202101017300))); "17:30:00"

2.4查找日期位于一年中的第几天

const dayOfYear = (date) => Math.floor((date - new Date(date.getFullYear(), 00)) / 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 = (minmax) => Math.floor(Math.random() * (max - min + 1) + min);
console.log(random(150));

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(00);
scrollToTop();

6.数组相关

6.1.# 打乱数组

const shuffleArray = (arr) => arr.sort(() => 0.5 - Math.random());
console.log(shuffleArray([1234]));//[ 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(1234);//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(051255); // Result: #0033ff

13.2.# 生成随机十六进制颜色

const randomHex = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6"0")}`;
console.log(randomHex());// Result: #92b008