0

假设我有一些文件需要收集有关信息并将这些信息推送到数组中。如果它们的长度不为零,则应加载它们,但如果它们的长度为零,则应忽略它们。我还需要将加载文件的总数作为全局变量。这似乎是一个 for 循环的工作,但是在我知道“长”文件的总数之前,我将如何构建它?我什至可以在 for 循环中访问全局 for 吗?如果不是 for 循环,那么“正确”的方式是什么?

4

2 回答 2

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 回答
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 回答