1.数组平铺。这是一个很实用的让复杂的数组快速变成一个常用数组的技巧。arr参数不管是一维数组还是多维数组,经过转变之后最终都会变成一维数组。
IDconst flatArray = [].concat(...arr);
2.手动延时xx毫秒。在异步请求编程中,有时候要用到让进程等待的情况,用这个函数可以设定等待多少毫秒。
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
3.把数组内容随便换个位置。可以用来生成随机位置的内容,比如洗牌这种场景。
const randomArr = (arr) => arr.sort(() => Math.random() - 0.5);
4.检查一个日期是否是在周末。常用于判断当前日期是否是周末,一般场景下还会叠加一个判断是否节假日。
const isWeekend = (date) => date.getDay() === 6 || date.getDay() === 0;
5.检查一个日期是否在某个年份内。通过获取参数日期的年和需要比较的日期的年来进行比较。如果年的参数比较规范,可以不转一次Date对象,直接比较即可。
const isInAYear = (date, year) => date.getUTCFullYear() === new Date(${year}).getUTCFullYear();
6.检查日期是否是一个有效日期。原理是用参数来创建日期,看日期是否有效。
const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf()); isDateValid('December 14, 2024 11:19:00'); // true
7.把字符串的首字母大写。有时候网页展示的时候会用得到。
const strFirstBug = (str) => str.charAt(0).toUpperCase() + str.slice(1); strFirstBug('hello world'); // Hello world
8.自定义方式的数组排序。
const orderBy = (arr, props, orders) => [...arr].sort((a, b) => props.reduce((acc, prop, i) => { if (acc === 0) { const [p1, p2] = orders && orders[i] <= 0 ? [b[prop], a[prop]] : [a[prop], b[prop]]; acc = p1 > p2 ? 1 : p1 < p2 ? -1 : 0; } return acc; }, 0) ); const users = [ { name: 'fred', age: 48 }, { name: 'barney', age: 36 }, { name: 'fred', age: 40 }, ]; orderBy(users, ['name', 'age'], [1, -1]); /* [ { name: 'barney', age: 36 }, { name: 'fred', age: 48 }, { name: 'fred', age: 40 }, ]; / orderBy(users, ['name', 'age']); / [ { name: 'barney', age: 36 }, { name: 'fred', age: 40 }, { name: 'fred', age: 48 }, ]; */