2017-03-31 10 views
0

fs.readdirを実行して、ディレクトリ内のファイル名の配列を返します。私は表示したくない特定のファイル名やファイルタイプをフィルタリングするための正規表現関数をいくつか実行しています。配列のインデックス0がsomeEmptyArray.push(データ)の後に定義されていません

次のコードでは、フィルタリングされた新しい配列が返されましたが、配列の0インデックスが未定義に戻ります。

コードフォーマットについて申し訳ありませんが、私は携帯電話を使用しており、インターネットのあるコンピュータにはアクセスできません。

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) 
    } 
    } 
) 

これは `[未定義、「file_1.js」]を返し なぜ、この出来事とどのように私はそれを取り除くんですか?

おかげ

+1

'push 'の前に' index - 'を置きます。 – destoryer

+0

または、このvar index = files.lengthをvar index = files.length -1に変更します。 – Sankara

答えて

1

files[index]配列の長さは常に最大のインデックス(ゼロベースのインデックス)よりも大きくなるので、初めてundefinedあります。 index--を1行上に移動すると動作しますが、最初の要素は除外されますので、すべての要素を取得するには>=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) 
    } 
}) 
+0

私は可読性のために 'while'ループで' 0> = 'を使うのが好きですが、うまくいきません。ファイル[index-1]は機能しましたが。ありがとう! – Andrew

関連する問題