0

情報を収集し、その情報を配列にプッシュする必要があるいくつかのファイルがあるとします。長さがゼロでない場合はロードする必要がありますが、長さがゼロの場合は無視する必要があります。また、ロードされたファイルの総数をグローバル変数として持つ必要があります。これは for ループの仕事のように思えますが、「長い」ファイルの総数を知る前にどのように構造化すればよいでしょうか? for ループ内でグローバル for にアクセスすることさえできますか? for ループでない場合、「正しい」方法は何ですか?

4

2 に答える 2

1

詳細がわからないので、ajax でファイルを取得していると仮定します。JavaScript の文字列は文字の配列のようなものなので、ajax イベントの responseText で長さを取得できます。これが役立つことを願っています:

jQuery Ajaxで...

var loadedFileData = [];
window.totalFiles = 0;
["file1", "file2", "file3"].forEach(function(file) {
 $.get("/path/to/files/"+file, function(data) {
  if (data.length) {
    loadedFileData.push(data);
    totalFiles++;
  }
 });
});
于 2012-06-29T16:26:22.063 に答える
1

事前にファイルの総数がわからない場合は、whileループを使用して、他の条件で中断する必要があります。

var TOTAL_FILES = 0,
    files = [],
    file;

// assume getNextFile() returns the next file in the list...
while (file = getNextFile()){

  // ...and the File object has a length instance attribute...
  if (file.length > 0){
    TOTAL_FILES++;

    // ...and processFile() works some magic on the file and returns it
    files.push(processFile(file));
  }
}

このループは、偽の値 ( 、、など)getNextFile()が返されるまで実行を続けます。falsenullundefined

于 2012-06-29T16:21:09.997 に答える