Estoy tratando de recorrer un Filelist
:
console.log('field:', field.photo.files)
field.photo.files.forEach(file => {
// looping code
})
Como puede ver field.photo.files
tiene 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.files
es un objeto prototipoFileList
; al igualHTMLCollection
que, no tieneArray.prototype
en su cadena de prototipos.for loop
Trabajo simple :)Respuestas:
A
FileList
no es unArray
, pero se ajusta a su contrato (tienelength
índices numéricos), por lo que podemos "tomar prestados"Array
métodos:Dado que obviamente está usando ES6, también podría hacerlo adecuado
Array
, usando el nuevoArray.from
mé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.files
es exactamente lo queconsole.log
muestra 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