utils

一、node 中require导入资料,封装

function  reduce(modulesFiles, isMap) {
      const map = modulesFiles.keys().reduce((modules, modulePath) => {
        const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1");
        const value = modulesFiles(modulePath);
        modules[moduleName] = value.default;
        return modules;
      }, {});
      if (isMap) return map;
      const list = [];
      for (const key in map) {
        list.push(map[key]);
      }
      return list;
    },

 

使用例子:

reduce(require.context('./svg',true,/\.svg$/),true)

 二、深拷贝

/**
 * 深拷贝
 * @param {*} source 
 * @return {object}
 */
function deepClone(source){
    if(!source&&typeof source!=='object'){
        throw new Error('error arguments','deepClone')
    }
    const targetObj=source.construtor===Array?[]:{}
    Object.keys(source).forEach(key=>{
        if(source[key]&&source[key]==='object'){
            targetObj[key]=deepClone(source[key])
        }else{
            targetObj[key]=source[key]
        }
        return targetObj
    })
}

三、去重

function unique=(arr)=>{
    if(Array.hasOwnProperty('from')){
        return Array.from(new Set(arr))
    }else{
        let n=[],r=[]
        for(let i=0;i<arr.length;i++){
            if(!n[arr[i]]){
                n[arr[i]]=true
                r.push(arr[i])
            }
        }
        return r
    }
}

四、将类数组转化为数组

function formAarry(ary){
    let arr=[]
    if(Array.isArray(ary)){
        arr=ary
    }else{
        arr=Array.prototype.slice.call(ary)
    }
    return arr
}
 
posted @ 2021-02-03 11:15  我不是小妖精  阅读(1269)  评论(0)    收藏  举报