Ich versuche, eine Filelist
:
console.log('field:', field.photo.files)
field.photo.files.forEach(file => {
// looping code
})
Wie Sie sehen können, field.photo.files
hat ein Filelist
:
Wie richtig durchlaufen field.photo.files
?
javascript
file
Alex
quelle
quelle
Array.prototype.forEach.call(field.photo.files, file => console.log(file));
field.photo.files
ist ein Objekt, auf dem ein Prototyp erstellt wurdeFileList
. genauso wieHTMLCollection
es nichtArray.prototype
in seiner Prototypenkette hat.for loop
Arbeit :)Antworten:
A
FileList
ist keinArray
, aber es entspricht seinem Vertrag (hatlength
und numerische Indizes), so dass wirArray
Methoden "ausleihen" können:Da Sie offensichtlich ES6 verwenden, können Sie es
Array
mit der neuenArray.from
Methode auch richtig machen :quelle
Building.vue?92ca:292 Uncaught (in promise) TypeError: Cannot convert undefined or null to object(…)
mitArray.from
.field.photo.files
? Ich habe das nicht überprüft ...field.photo.files
ist genau das, was dieconsole.log
Shows in meiner Frage zeigen.[...field.photo.files].map(file => {});
Sie können auch mit einem einfachen für iterieren:
quelle
In ES6 können Sie Folgendes verwenden:
Referenz: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
quelle
Die lodash- Bibliothek verfügt über eine _forEach- Methode, die alle Auflistungsentitäten wie Arrays und Objekte einschließlich der FileList durchläuft:
quelle
Der folgende Code ist in Typescript
quelle
Wenn Sie Typescript verwenden, können Sie Folgendes tun: Für eine Variable 'files' mit dem Typ FileList [] oder File [] verwenden Sie:
quelle