我试图通过Filelist循环:
console.log('field:', field.photo.files)
field.photo.files.forEach(file => {
// looping code
})
如你所见,field.photo.files有一个文件列表:
如何正确循环通过field.photo.files?
我试图通过Filelist循环:
console.log('field:', field.photo.files)
field.photo.files.forEach(file => {
// looping code
})
如你所见,field.photo.files有一个文件列表:
如何正确循环通过field.photo.files?
当前回答
如果你正在使用Typescript,你可以这样做: 对于FileList[]或File[]类型的变量文件,使用:
for(let file of files){
console.log('line50 file', file);
}
其他回答
你也可以用简单的for迭代:
var files = field.photo.files;
for (var i = 0; i < files.length; i++) {
console.log(files[i]);
}
lodash库有一个_forEach方法,循环遍历所有的集合实体,比如数组和对象,包括FileList:
_.forEach(field.photo.files,(file => {
// looping code
})
FileList不是数组,但它符合它的契约(有长度和数值索引),所以我们可以“借用”数组方法:
Array.prototype.forEach.call(field.photo.files, function(file) { ... });
因为你显然是在使用ES6,你也可以让它成为一个合适的数组,使用新的Array.from方法:
Array.from(field.photo.files).forEach(file => { ... });
如果你正在使用Typescript,你可以这样做: 对于FileList[]或File[]类型的变量文件,使用:
for(let file of files){
console.log('line50 file', file);
}
在ES6中,你可以使用:
[...field.photo.files].forEach(file => console.log(file));
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment