Nodejs-从文件系统创建对象数组

问题描述 投票:0回答:1

我正在我的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)
]

现在这是一个完整目录,因此每个顶级目录都会有一个对象,该对象中将包含文件和子目录。

通过硬编码一切工作原理,我能够使用有限数量的子目录来完成这项工作。我不想在允许他们做的事情上限制他们,或者如果需要的话,必须回去为另一级目录添加更多代码。

[我花了整整两天的时间在如何动态地实现这一目标上动了脑筋,而且还没有走得更近,这就是为什么我没有起始代码可以使用的原因。

有没有人可以伸出援手,我在工作上没有问题,只需要一些指导。

谢谢!

node.js reactjs express filesystems fs
1个回答
0
投票

嘿,尝试了一些希望对您有所帮助的事情:

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'更改为您需要解析的文件夹路径

© www.soinside.com 2019 - 2024. All rights reserved.