假设我有一些文件,我需要收集有关信息并将该信息推送到数组。如果它们的长度非零,则应加载它们,但如果长度为零,则应忽略它们。此外,我需要将已加载文件的总数作为全局变量。这似乎是一个for循环的工作,但在我知道“长”文件的总数之前,我将如何构建它?我甚至可以在for循环中访问全局吗?如果不是for循环,那么“正确”的方式是什么?
答案 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()
返回假值(false
,null
,undefined
等。)
答案 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++;
}
});
});