我试图通过Filelist循环:

console.log('field:', field.photo.files)
field.photo.files.forEach(file => {
   // looping code
})

如你所见,field.photo.files有一个文件列表:

如何正确循环通过field.photo.files?


当前回答

在ES6中,你可以使用:

[...field.photo.files].forEach(file => console.log(file));

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

其他回答

在ES6中,你可以使用:

[...field.photo.files].forEach(file => console.log(file));

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

如果你正在使用Typescript,你可以这样做: 对于FileList[]或File[]类型的变量文件,使用:

for(let file of files){
    console.log('line50 file', file);
}

lodash库有一个_forEach方法,循环遍历所有的集合实体,比如数组和对象,包括FileList:

_.forEach(field.photo.files,(file => {
     // looping code
})

你也可以用简单的for迭代:

var files = field.photo.files;

for (var i = 0; i < files.length; i++) {
    console.log(files[i]);
}

下面的代码是Typescript

urls = new Array<string>();

detectFiles(event) {
   const $image: any = document.querySelector('#file');
   Array.from($image.files).forEach((file: any) => {
      let reader = new FileReader();
      reader.onload = (e: any) => { this.urls.push(e.target.result); }
      reader.readAsDataURL(file);
   }
}