将非零长度文件推送到数组

时间:2012-06-29 16:02:50

标签: javascript

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

2 个答案:

答案 0 :(得分: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等。)

答案 1 :(得分: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++;
  }
 });
});