J'essaye de parcourir un Filelist
:
console.log('field:', field.photo.files)
field.photo.files.forEach(file => {
// looping code
})
Comme vous pouvez le voir field.photo.files
a un Filelist
:
Comment faire une boucle correctement field.photo.files
?
javascript
file
Alex
la source
la source
Array.prototype.forEach.call(field.photo.files, file => console.log(file));
field.photo.files
est un objet prototypé surFileList
; tout commeHTMLCollection
, il n'a pasArray.prototype
dans sa chaîne de prototypes.for loop
Travail simple :)Réponses:
A
FileList
n'est pas unArray
, mais il est conforme à son contrat (alength
et indices numériques), nous pouvons donc "emprunter" desArray
méthodes:Puisque vous utilisez évidemment ES6, vous pouvez également en faire un bon
Array
, en utilisant la nouvelleArray.from
méthode:la source
Building.vue?92ca:292 Uncaught (in promise) TypeError: Cannot convert undefined or null to object(…)
avecArray.from
.field.photo.files
? Je ne vérifiais pas ça ...field.photo.files
est exactement ce queconsole.log
montre ma question.[...field.photo.files].map(file => {});
Vous pouvez également itérer avec un simple pour:
la source
Dans ES6, vous pouvez utiliser:
Référence: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
la source
La bibliothèque lodash a une méthode _forEach qui parcourt toutes les entités de collection, telles que les tableaux et les objets, y compris FileList:
la source
Le code suivant est en typographie
la source
Si vous utilisez Typescript, vous pouvez faire quelque chose comme ceci: Pour une variable «fichiers» avec un type FileList [] ou File [], utilisez:
la source