Nodejs - 从文件系统创建对象数组
Nodejs - Create Array of Objects from filesystem
我正在我的 ReactApp 中制作一个代表文件夹结构的菜单。文件夹按里面文件的类别命名,有些文件夹有子文件夹,里面有文件。
我正在寻找的基本输出是这样的:
[
{
"Payroll Forms": {
files: ["form1.pdf", "form2.pdf"],
"Payroll How To's": {
files: ["file1.pdf", "file2.doc"]
},
"Payroll Adjustments": {
files: ["file1.doc", "file2.pdf"],
"Payroll Subdirectory": {
files: ["file1.xsl", "file2.pdf"]
}
}
},
{
"LOA": {
files: []
......(you get the idea)
]
现在这是一个完整的目录,因此每个顶级目录都有一个对象,其中包含文件和子目录。
我能够通过硬编码一切的工作方式来使用有限数量的子目录来完成这项工作。我不想限制他们被允许做的事情,或者如果他们需要的话必须返回并为另一级别的目录添加更多代码。
我花了 2 天的大部分时间绞尽脑汁思考如何动态地自动执行此操作,但没有取得任何进展,这就是为什么我没有可用的起始代码。
有没有人可以伸出援手,我的工作没问题,只是需要一些指导。
提前致谢!
嘿尝试了一些希望它有所帮助:
const fs = require('fs');
//const folderObject = {files:[]}; //if the parent folder has files
const folderObject = {};
function parseFolder(obj, folderPath){
const files = fs.readdirSync(folderPath);
for(file of files){
const filePath = `${folderPath}/${file}`;
if(fs.lstatSync(filePath).isDirectory()){
obj[file] = {files:[]};
parseFolder(obj[file],filePath);
} else {
obj.files.push(file);
}
}
}
parseFolder(folderObject,'./node_modules');
把'./node_modules'改成你需要解析的文件夹路径
我正在我的 ReactApp 中制作一个代表文件夹结构的菜单。文件夹按里面文件的类别命名,有些文件夹有子文件夹,里面有文件。
我正在寻找的基本输出是这样的:
[
{
"Payroll Forms": {
files: ["form1.pdf", "form2.pdf"],
"Payroll How To's": {
files: ["file1.pdf", "file2.doc"]
},
"Payroll Adjustments": {
files: ["file1.doc", "file2.pdf"],
"Payroll Subdirectory": {
files: ["file1.xsl", "file2.pdf"]
}
}
},
{
"LOA": {
files: []
......(you get the idea)
]
现在这是一个完整的目录,因此每个顶级目录都有一个对象,其中包含文件和子目录。
我能够通过硬编码一切的工作方式来使用有限数量的子目录来完成这项工作。我不想限制他们被允许做的事情,或者如果他们需要的话必须返回并为另一级别的目录添加更多代码。
我花了 2 天的大部分时间绞尽脑汁思考如何动态地自动执行此操作,但没有取得任何进展,这就是为什么我没有可用的起始代码。
有没有人可以伸出援手,我的工作没问题,只是需要一些指导。
提前致谢!
嘿尝试了一些希望它有所帮助:
const fs = require('fs');
//const folderObject = {files:[]}; //if the parent folder has files
const folderObject = {};
function parseFolder(obj, folderPath){
const files = fs.readdirSync(folderPath);
for(file of files){
const filePath = `${folderPath}/${file}`;
if(fs.lstatSync(filePath).isDirectory()){
obj[file] = {files:[]};
parseFolder(obj[file],filePath);
} else {
obj.files.push(file);
}
}
}
parseFolder(folderObject,'./node_modules');
把'./node_modules'改成你需要解析的文件夹路径