Próbuję przejść przez Filelist
:
console.log('field:', field.photo.files)
field.photo.files.forEach(file => {
// looping code
})
Jak widać field.photo.files
ma Filelist
:
Jak prawidłowo przejść field.photo.files
?
javascript
file
Alex
źródło
źródło
Array.prototype.forEach.call(field.photo.files, file => console.log(file));
field.photo.files
jest prototypem obiektuFileList
; tak jakHTMLCollection
nie maArray.prototype
w swoim łańcuchu prototypów.for loop
praca :)Odpowiedzi:
A
FileList
nie jest anArray
, ale jest zgodny ze swoim kontraktem (malength
i indeksami numerycznymi), więc możemy „pożyczyć”Array
metody:Ponieważ oczywiście używasz ES6, możesz również sprawić, że będzie to poprawne
Array
, używając nowejArray.from
metody:źródło
Building.vue?92ca:292 Uncaught (in promise) TypeError: Cannot convert undefined or null to object(…)
zArray.from
.field.photo.files
? Nie sprawdzałem tego ...field.photo.files
jest dokładnie tym, coconsole.log
pokazuje moje pytanie.[...field.photo.files].map(file => {});
Możesz również wykonać iterację za pomocą prostego for:
źródło
W ES6 możesz użyć:
Źródła: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destruecting_assignment
źródło
Lodash biblioteka ma _forEach metodę pętli przez wszystkie podmioty zbiórki, takich jak tablice i obiekty, w tym FileList:
źródło
Poniższy kod jest w skrypcie Typescript
źródło
Jeśli używasz Typescript, możesz zrobić coś takiego: Dla zmiennej „files” o typie FileList [] lub File [] użyj:
źródło