前端之路

js方法

2020-12-15  本文已影响0人  星星藏进黑夜

1.深层合并对象(深拷贝)

function deepMerge(obj1, obj2) {
    var key;
    for(key in obj2) {
        // 如果target(也就是obj1[key])存在,且是对象的话再去调用deepMerge,否则就是obj1[key]里面没这个对象,需要与obj2[key]合并
        obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ?
                this.deepMerge(obj1[key], obj2[key]) : obj1[key] = obj2[key];
    }
    return obj1;
}

2.最大最小值

Array.prototype.max = function(){ 
    return Math.max.apply({},this) 
} 
Array.prototype.min = function(){ 
    return Math.min.apply({},this) 
}
[1,2,3].max() //3
[1,2,3].min() //1

3.时间戳转日期格式

function formatDate(date) {
    var date = new Date(date);
    var YY = date.getFullYear() + '-';
    var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
    var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
    var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
    var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
    var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
    return YY + MM + DD +" "+hh + mm + ss;
}
formatDate(20001003)//1970-01-01 13:33:21

4.防抖动函数

/**
 * 防抖动函数
 * @param {*} func 要执行的函数
 * @param {*} wait 规定函数至少间隔多久执行
 */
function debounce(func, wait) {
    let timeout //定义变量
    return function () {
        clearTimeout(timeout) //每次触发时先清除上一次的定时器,然后重新计时
        timeout = setTimeout(() => {
            func.apply(this, arguments)
        }, wait) //指定xx ms后触发真正想要进行的操作
    }
}
function func(){
    console.log('执行')
}
func = debounce(func, 1000)

5.获取文本字节长度

/**
 * 获取文本字节长度
 * @param {String} val 字符串
 */
function getByteSize(val) {
    var bytesCount = 0
    if (val && val.length > 0) {
        var str = new String(val)
        for (var i = 0, n = str.length; i < n; i++) {
            var c = str.charCodeAt(i)
            if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
                bytesCount += 1
            } else {
                bytesCount += 2
            }
        }
    }
    return bytesCount
}
上一篇 下一篇

猜你喜欢

热点阅读