tools工具函数

js 将多维数组转为一维数组:

var arr = [1,[2,[[3,4],5],6]];
function unid(arr){
        var arr1 = (arr + '').split(',');
        var arr2 = arr1.map(function(x){
            return Number(x);
        });
        return arr2;
}
console.log(unid(arr));
复制代码

防抖函数

tools.debounce = function (fn, delay = 300) {
    let handle;
    return function (e) {
        // 取消以前的延时调用
        clearTimeout(handle);
        handle = setTimeout(() => {
            fn(e);
        }, delay);
    }
}
复制代码

经过toString方法获取类型

tools.getType = (obj) => {
    var type = '';
    var typeArr = ['String', 'Object', 'Number', 'Array', 'Undefined', 'Function', 'Null', 'Symbol'];
    for (var i = 0; i < typeArr.length; i++) {
        if (Object.prototype.toString.call(obj) == '[object ' + typeArr[i] + ']') {
            type = typeArr[i]
        }
    }
    return type;
}
复制代码

数据深拷贝

tools.deepCopy = (p, c) => {
    var c = c || {};
    for (var i in p) {
        if (typeof p[i] === 'object') {
            if (p[i] === null) {
                c[i] = null;
            } else {
                c[i] = (p[i].constructor === Array) ? [] : {};
                tools.deepCopy(p[i], c[i]);
            }
        } else {
            c[i] = p[i];
        }
    }
    return c;
}
复制代码

设置本地存储和本地读取

//获取本地存储
tools.getStorage = key => {
    const re = /^\[|\{|\}|\]$/g //判断字符中是否有[]{}
    let getIt = localStorage.getItem(key)
    if (re.test(getIt)) {
        return JSON.parse(getIt)
    } else {
        return getIt
    }
}

//设置本地存储
tools.setStorage = (key, val) => {
    if (typeof val == 'string') {
        //若是传过来的是字符串,那么说明要保存的是id
        localStorage.setItem(key, val)
    } else {
        //若是传过来的不是字符串,要保存数组
        localStorage.setItem(key, JSON.stringify(val))
    }
}
复制代码

获取多维数组的层级

function getArrTier(arr){
    if (!Array.isArray(arr)) throw('type error')
    let strArr = JSON.stringify(arr).split(']'),num = 0
    for(let i = 0; i < strArr.length;i++){
        let str2Arr = strArr[i].split('[')
        if(num < str2Arr.length){
            num = str2Arr.length
        }
    }
    return num
}
复制代码
相关文章
相关标签/搜索