小记

158 阅读2分钟

常用方法

清空对象中的空值

toType(obj) {
            return {}.toString
                .call(obj)
                .match(/\s([a-zA-Z]+)/)[1]
                .toLowerCase()
},
filterNull(o) {
            for (var key in o) {
                if (o[key] === null || o[key] === '' || o[key] === undefined) {
                    delete o[key]
                }
                if (this.toType(o[key]) === 'string') {
                    o[key] = o[key].trim()
                } else if (this.toType(o[key]) === 'object') {
                    o[key] = this.filterNull(o[key])
                } else if (this.toType(o[key]) === 'array') {
                    o[key] = this.filterNull(o[key])
                }
            }
            return o
},

去除数组中重复的对象

deleteEmptyObject(arr) {
    // console.log('要去重的::', arr)
    let obj = {}
    arr = arr.reduce(function (item, next) {
        obj[next.skuId] ? '' : (obj[next.skuId] = true && item.push(next))
            return item
        }, [])
    return arr
},

Tomcat的认识&使用:

https://blog.csdn.net/weixin_60719453/article/details/122685752?utm_medium=distribute.pc_feed_blog_category.none-task-blog-classify_tag-17.nonecasedepth_1-utm_source=distribute.pc_feed_blog_category.none-task-blog-classify_tag-17.nonecase

js原生深拷贝

// 定义一个深拷贝函数  接收目标target参数
function deepClone(target) {
    // 定义一个变量
    let result;
    // 如果当前需要深拷贝的是一个对象的话
    if (typeof target === 'object') {
        // 如果是一个数组的话
        if (Array.isArray(target)) {
            result = []; // 将result赋值为一个数组,并且执行遍历
            for (let i in target) {
                // 递归克隆数组中的每一项
                result.push(deepClone(target[i]))
            }
            // 判断如果当前的值是null的话;直接赋值为null
        } else if (target === null) {
            result = null;
            // 判断如果当前的值是一个RegExp对象的话,直接赋值 
        } else if (target.constructor === RegExp) {
            result = target;
        } else {
            // 否则是普通对象,直接for in循环,递归赋值对象的所有值
            result = {};
            for (let i in target) {
                result[i] = deepClone(target[i]);
            }
        }
    } else {
        // 如果不是对象的话,就是基本数据类型,那么直接赋值
        result = target;
    }
    // 返回最终结果
    return result;
}

题库:

zhuanlan.zhihu.com/p/267659458

js事件机制
1、先执行主线程
2、遇到宏队列放在宏队列
3、遇到微队列放在微队列
4、主线程执行完毕
5、执行微队列,执行完毕
6、执行一次宏队列中的一个任务,执行完毕
7、执行微队列,执行完毕
依次循环

可mock接口: autumnfish.cn/api/joke/li…

function rem() {
    document.documentElement.style.fontSize = document.documentElement.clientWidth / 7.5 + 'px'
}
rem()
window.onresize = rem

html转义: https://www.cnblogs.com/sexintercourse/p/14860296.html

handleNumber(num) {
    // 保留两位小数,向上取整
    let t = num * 100
    return Math.ceil((t * 100).toFixed(1)) / 100
},