在子函数中使用带闭包的concat方法

时间:2017-03-31 23:38:19

标签: javascript arrays scope closures

我想在子函数的范围内使用.concat而不是push,然后在范围链的上方访问它。

我这里有一个简单的函数,可以在通过正则表达式函数运行文件后过滤掉某些文件名和文件类型。以下函数适用于.push数组方法,但如果我尝试使用.concat

它将返回一个空数组
fs.readdir('./schema', function(err,files){
  var filelist = [];
  if(err)
    throw err;
  else{
    var index = files.length;
    while(index>0){
      filelist.concat(isNOTswapfile(files[index]));
      index--;
      }
    console.log(filelist)
    }
  }
)

返回一个空数组[]

欢迎并感谢帮助。

1 个答案:

答案 0 :(得分:1)

concat返回一个新的数组。因此,除非您重新分配filelist变量,否则它将保持[]

while(index>0){
  filelist = filelist.concat(isNOTswapfile(files[index]));
  index--;
}
console.log(filelist)

应该可以正常工作。

您可以在MDN Array.prototype.concat

上阅读更多内容