QQWQX

快乐工作,健康生活。

0%

JS获取某文件夹里的.js文件

##JS获取某文件夹里的.js文件

1
2
3
4
5
6
7
8
/*
拿到.js文件赋值到constRoutesFiles中
*/
const constRoutesFiles = require.context(
"@/router/config",
false,
/\.js$/
);
1
2
3
4
5
6
7
8
9
10
11
12
13
/*
文件夹中Unionpay.js文件
*/
export const UnionpayCommon = [
'UnionpayResult'
];

export const Unionpay = {
'UnionpayQuery': [],
'UnionpaySign': [
'UnionpaySignConfirm'
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
获取路由名称数组和子菜单
*/
export function getConfigPages (key = '') {
// constRoutesFiles.keys() 获取所有js文件名。
// ['Unionpay.js', 'xxx.js']
const routeConfigObj = constRoutesFiles.keys().reduce((routeNames, routeName) => {
const module = constRoutesFiles(routeName)
/* 获取到的module为一个对象,对象里有去到js中所有值
{
UnionpayCommon: [...],
Unionpay: {...}
}
*/
let tempObj = {}
for (let key in module) {
if (!(module[key] instanceof Array)) {
tempObj = Object.assign(tempObj, { ...module[key] })
}
}
return Object.assign(routeNames, tempObj)
}, {})
// 循环累加,得到一个对象包含所有js中的属性
return routeConfigObj[key]
}

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。用于合并数组或合并对象。

routeNames保存在此数组;routeName累加对象;最后{}为初始值;
注:如果没有初始值,则第一项为初始值,routeName从第二项开始

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const arr = [1,2,3,4,5];
const sum = arr.reduce(function(prev,cur,index,arr){
console.log(prev,cur,index);
return prev + cur;
});
console.log('arr:',arr,'sum:',sum);

/*
1 2 1
3 3 2
6 4 3
10 5 4
arr: [1,2,3,4,5] sum: 15
*/