web-dev-qa-db-ja.com

ファイルリストでforEachを使用できません

Filelistをループしようとしています。

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

ご覧のとおり、field.photo.filesにはFilelistがあります:

enter image description here

field.photo.filesを適切にループする方法

82
alex

FileListArrayではありませんが、その契約に準拠している(lengthおよび数値インデックスがある)ので、Arrayメソッドを「借用」できます。

Array.prototype.forEach.call(field.photo.files, function(file) { ... });

明らかにES6を使用しているので、新しいArray.fromメソッドを使用して、適切なArrayにすることもできます。

Array.from(field.photo.files).forEach(file => { ... });
172
Amadan

また、次の単純な方法で反復することもできます。

var files = field.photo.files;

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

lodash ライブラリには、FileListを含む配列やオブジェクトなどのすべてのコレクションエンティティをループする _ forEach メソッドがあります。

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