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
}

浙公网安备 33010602011771号