js工具

2018-03-22  本文已影响0人  进击的蒸汽机
  /**
 * [多维数组解一维]
 * @param  {Array } array [待处理数组]
 * @param  {Number} depth [解构深度]
 * @return {Array }       [返回新数组]
 */
function flattenDepth(array, depth = 1) {
    // 创建一个新数组
    let result = [];
    array.forEach( item => {
        if(Array.isArray(item) && depth > 0) {
            // 递归解构
            result.push(...(flattenDepth(item, --depth)))
        } else {
            result.push(item)
        }
    } )

    return result;
};

/**
 * [cloneValue 对象拷贝]
 * @param  {[type]}  value  [待处理对象]
 * @param  {Boolean} isDeep [深浅拷贝]
 * @return {[type]}         [结果]
 */
function cloneValue(value, isDeep) {
    if(value === null) return null;
    if(typeof value !== 'object') return value;
    if(Array.isArray(value)) {
        if(isDeep) {
            return value.map( item => cloneValue(item, true) )
        }
        return [].concat(value);
    } else {
        if(isDeep) {
            let obj = {};
            Object.keys(value).forEach( item => {
                obj[item] = cloneValue(value[item], true)
            } );
            return obj;
        }
        return { ...value }
    }

}

function debounce(fun, wait) {
    let timer;
    return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(function() {
            fun.apply(context, args);
        }, wait);
    }
}

上一篇下一篇

猜你喜欢

热点阅读