Estoy tratando de recorrer un Filelist:
console.log('field:', field.photo.files)
field.photo.files.forEach(file => {
// looping code
})
Como puede ver field.photo.filestiene un Filelist:
¿Cómo recorrer correctamente field.photo.files?
javascript
file
alex
fuente
fuente


Array.prototype.forEach.call(field.photo.files, file => console.log(file));field.photo.fileses un objeto prototipoFileList; al igualHTMLCollectionque, no tieneArray.prototypeen su cadena de prototipos.for loopTrabajo simple :)Respuestas:
A
FileListno es unArray, pero se ajusta a su contrato (tienelengthíndices numéricos), por lo que podemos "tomar prestados"Arraymétodos:Dado que obviamente está usando ES6, también podría hacerlo adecuado
Array, usando el nuevoArray.frommétodo:fuente
Building.vue?92ca:292 Uncaught (in promise) TypeError: Cannot convert undefined or null to object(…)conArray.from.field.photo.files? No estaba comprobando eso ...field.photo.fileses exactamente lo queconsole.logmuestra en mi pregunta.[...field.photo.files].map(file => {});También puede iterar con un simple para:
fuente
En ES6 puede utilizar:
Referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
fuente
La biblioteca lodash tiene un método _forEach que recorre todas las entidades de la colección, como matrices y objetos, incluido FileList:
fuente
El siguiente código está en TypeScript
fuente
Si está usando TypeScript, puede hacer algo como esto: Para una variable 'archivos' con un tipo FileList [] o File [] use:
fuente