javascript 小技巧积累
1、计算两个日期之间的天数
const dayDidd = (date,date2) => Math.ceil(Math,abs(date - date2) / 86400000)
console.log(dayDiff(new Date(‘2021-05-10’), new Date(‘2021-11-25’)))
2、将文字复制到剪贴板
const copytext = async (text) =>{ await navigator.clipbord.writeText(text) }
3、检查日期是否为周末
const isWeekend = (data) => [0,6].indexOf(date.getDay()) !== -1;
console.log(isWeekend(new Date(2021,4,14))) //false
4、两个数字之间生成一个随机数
const random = (min,max) => Math.floor(Math.random()) * (max – min +1) + min);
5、滚动到页面顶部
const scrollToTop = () => window.scrollTo(0,0)
6、大写字符串
const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
console.log(capitalize('hello world'));
7、短路评估速记
// Longhand
if (name !== null || name !== undefined || name !== '') {
let fullName = name;
}
// Shorthand
const fullName = name || 'buddy';
8、array.reduce()
操作数组、对象数组:
arr.reduce(function(prev,cur,index,arr){ }, init);
其中,
arr 表示原数组;
prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值
求数组项最大值:
var max = arr.reduce(function (prev, cur) {
return Math.max(prev,cur);
});
数组去重
var newArr = arr.reduce(function (prev, cur) {
prev.indexOf(cur) === -1 && prev.push(cur);
return prev;
},[]);
数组扁平化
const newArray = [1, 2, [3, 4, [5, 6],7]]
//ES6语法
const flatten = arr =>
arr.reduce( (flat, next) =>
flat.concat(Array.isArray(next) ? flatten(next) : next)
, [])
9、浮点数转为整数
onsole.log(~~6.95); // 6
console.log(6.95 >> 0); // 6
console.log(6.95 << 0); // 6
console.log(6.95 | 0); // 6 //
>>>不可对负数取整
console.log(6.95 >>> 0);
10、避免多条件并列
const enum = ['process', 'wait', 'fail']
if (enum.includes(status)) {
doSomething()
}