2017-03-31 57 views
0

我想在子函數的作用域內使用.concat而不是推入,然後在作用域鏈上訪問它。在子函數中使用帶有閉包的concat方法

我在這裏有一個簡單的函數,在通過正則表達式函數運行它們來過濾某些文件名和文件類型之後,列出目錄中的文件。下面的函數工作正常用.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) 
    } 
    } 
) 

返回一個空數組[]

幫助是值得歡迎和讚賞它返回一個空數組。

+0

你如何使用concat?向我們展示不起作用的代碼。 – Yatrix

+1

您必須指定concat的結果,因爲它會返回一個新數組。 – destoryer

+0

@Yatrix對不起,一個mod(可能是最初標記爲重複的那一個)通過在這裏複製和粘貼我原來的(和錯誤的)帖子來編輯我的帖子。自從我重新編輯了這篇文章。抱歉! – Andrew

回答

1

concat返回給你一個新的Array返回。所以,除非你重新分配filelist可變後,它只會保持[]

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

應該只是罰款。

你可以在MDN Array.prototype.concat上看到更多

相關問題