随机生成字母和数组的组合
1  | Math.random().toString(36).substr(2);  | 
格式化时间
1  | const dateFormatter = (formatter, date) => {  | 
获取变量的实际类型
1  | const trueTypeOf = (obj) => {  | 
1. if多条件判断
1  | // 冗余  | 
2. if…else…
1  | // 冗余  | 
- 多条件判断同一执行方法
 
1  | if(status === 0 || status === 1 || status === 2 || status === 3) {  | 
- 多种可能对应不同情况
 
1  | // status 非数值或数值过大  | 
3. Null, Undefined, 空值检查
1  | // 冗余  | 
4. 函数条件调用
1  | // 冗余  | 
5. switch多条件
1  | // 冗余  | 
6. 隐式返回
1  | // 冗余  | 
7. 普通数组去重&对象数组去重
1  | const uniqueArr = (arr) => [...new Set(arr)];  | 
8. 从数组中取出相对应属性的值
1  | const reducedFilter = (data, keys, fn) =>data.filter(fn)  | 
9.关于 return cur.push(v*2),cur之谜
let arr=[1,2,3,4]
const b=arr.reduce((cur,v)=> [...cur,v*2],[])
const b1=arr.reduce((cur,v)=> {
    //直接 return cur.push(v*2)报错是因为 push返回的不是数组,是push之后的长度
    return cur.push(v*2),cur
},[])
const b2=arr.reduce((res, cur)=> { 
    res.push(cur * 2); 
    return res; 
}, [])
// [2,4,6,8]
return cur.push(v*2),cur等同于return cur
10.邮箱正则
1  | export const isEmail = (e) => {  | 
11.是否是微信浏览器
1  | export const isWeiXin = () => {  | 
12.去除html标签
1  | const removeHtmlTag = (str) => {  | 
13.动态引入js
1  | export const innerScript = (src) => {  | 
14.判断对象是不是空对象
1  | let data={}  | 
15.判断对象中是不是所有值都为空
1  | let data = { name: "1", value: "2", value2: ""}  | 
16.双!号操作符将任何变量转换为布尔值
1  | !!0 //false  | 
17.当满足条件时往对象中添加属性
1  | let isExist = true;  | 
18.函数执行时间
1  | console.time('testTime')  | 
19.判断是否滚动到底部
1  | const bottomVisible = () =>  | 
20.去除数组中的空值假值
1  | Array.filter(Boolean);  | 
21.js拼接get请求参数,加入有值参数去除空参
1  | const formatParams = (params) => {  | 
22.判断浏览器是否全屏
1  | // 添加onresize事件监听器  |