每次迭代打印出 forEach 中的数组值

Print out array value inside forEach with each iteration

我正在使用 jsZip 将多个文件保存到一个 zip 文件中并下载。我不知道如何从 urls 数组中输出该迭代的数组名称。

每个 urls 数组都是应该放在 var filename = ""; 中的文件名,只是找不到打印每个数组名称的方法。

var zip = new JSZip();
var count = 0;

var urls = [
    "FirstFile.pdf",
    "SecondFile.pdf",
];

urls.forEach(function(url)
{

  //if iteration #1, then echo firstFile.pdf below, 
  //if iteration #2 echo SecondFile.pdf below so it saves the files inside the zip.
  var filename = "output urls array here as name";


  JSZipUtils.getBinaryContent(url, function (err, data) {
     if(err) {
        throw err; // or handle the error
     }
     zip.file('./temp/' + filename, data, {binary:true});
     count++;

     if (count == urls.length)
     {
       zip.generateAsync({type:'blob'}).then(function(content)
       {
          $( ".download" ).click(function() {
            saveAs(content, 'FileZip.zip');
          });             
       });
     }
  });
});
 urls.forEach(function(url)
{

  //if iteration #1, then echo firstFile.pdf below, 
  //if iteration #2 echo SecondFile.pdf below so it saves the files inside the zip.
  var filename = url;

});

文件名存储在传递给与 foreach 一起使用的匿名函数的 url 参数中。

因此,要在任何迭代中访问文件名,只需使用 url

var filename = url;

事实上,您并不真的需要第二个名为文件名的变量,您可以简单地修改后面的行,使其看起来像

 zip.file('./temp/' + url, data, {binary:true});