在someEmptyArray.push(data)

时间:2017-03-31 23:11:34

标签: javascript arrays node.js undefined

我正在运行fs.readdir以返回目录中的文件名数组。我正在运行一些正则表达式函数来过滤掉我不想显示的某些文件名和/或文件类型。

使用以下代码我返回了一个新的过滤数组,但数组的0索引返回undefined。

很抱歉提前代码格式化,我在手机上,而且我无法访问带有互联网的电脑。

fs.readdir('./schema', function(err,files){
  var filelist = [];
  if(err)
    throw err;
  else{
    var index = files.length;
    while(index>0){
      filelist.push(isNOTswapfile(files[index]));
      index--;
      }
    console.log(filelist)
    }
  }
)

返回`[undefined,' file_1.js'] 为什么会发生这种情况?如何摆脱它?

由于

1 个答案:

答案 0 :(得分:1)

files[index]第一次是undefined,因为数组的长度总是大于最大索引(基于零的索引)。移动index--一行,它会起作用,但是你将省略第一个元素,所以要比较>=0或index-1来获取所有元素。

fs.readdir('./schema', function(err, files) {
    var filelist = [];
    if (err) {
        throw err;
    } else {
        var index = files.length;
        while (index >= 0) {
            index--;
            filelist.push(isNOTswapfile(files[index]));
        }
        console.log(filelist)
    }
})