javascript fs.readdir().map函数只返回一个文件的信息,如何读取单个文件名和索引并返回数组?

insrf1ej  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(123)

我试图读取一个目录的文件名,将单个文件名拆分成一个数组,然后返回一个包含索引位置和拆分文件名数组的数组。现在它只会读取并返回一个文件。到目前为止,这是我所拥有的:

const splitString = (_str) => {
var myNewString = 
_str.split("-");
return myNewString;
} ;

const getInfo = (filePath) => {
   let tempfileInfo = [];
   let tempfileName;
   let tempfileIndex;
   fs.readdirSync(filePath).map((i, index) => {
    return {
       id: tempfileIndex = index + 1;
       filename: tempfileName = splitString(i);
        }
  }); tempfileInfo.push(tempfileIndex, tempfileName);
      console.log(tempfileInfo); //returns [20, ['9', 'YE', 'BLU', 'ITEM', '.png']]
}

我试过将forEach()添加到.map函数中,但这只会产生重复一次的同一个数组,然后再产生另一个数组,等等。直到它到达目录中文件的末尾。另外,我不认为我实际上需要返回的索引,但如果出于某种原因,它将有助于我的程序的其余部分,我不明白为什么索引是20要么(是的,有20个文件在文件夹中,我添加1),它正在拉的文件是直接在所有文件的中心,它从后面开始索引,所以什么是.map索引在这里?这可能是一些简单的东西,但由于某种原因,我只是现在看不到它。提前感谢任何帮助!

bvhaajcl

bvhaajcl1#

你的代码中已经有了一个解决方案。
Array.map返回一个新的Array,你只需要给它分配一个变量。

const splitString = (_str) => {
   var myNewString =  _str.split("-");
   return myNewString;
} ;// It's a simple split, you don't need any separate function indeed

const getInfo = (filePath) => {
  //let tempfileInfo = [];
  //let tempfileName;
  //let tempfileIndex;
  const tempfileInfo = fs.readdirSync(filePath).map((fname,index) => {
     return {
       id: ++index,
       filename: fname.split("-")
     }
   }); 

 //tempfileInfo.push(tempfileIndex, tempfileName);
  console.log(tempfileInfo);
}
aiqt4smr

aiqt4smr2#

我解决了自己的问题。事实证明,我不需要去那么深。这返回了正确的数组:

const getInfo = (filePath) => {
  let tempfileInfo = [];
  fs.readdirSync(filePath).forEach(file => {
    tempfileInfo.push(tempfileName);
    console.log(tempfileInfo);
  });
}

相关问题