Saya mencoba mengulang melalui Filelist
:
console.log('field:', field.photo.files)
field.photo.files.forEach(file => {
// looping code
})
Seperti yang Anda lihat field.photo.files
memiliki Filelist
:
Bagaimana cara mengulang dengan benar field.photo.files
?
javascript
file
alex
sumber
sumber
Array.prototype.forEach.call(field.photo.files, file => console.log(file));
field.photo.files
adalah objek yang di-prototipeFileList
; sama sepertiHTMLCollection
, tidak adaArray.prototype
dalam rantai prototipe-nya.for loop
Pekerjaan sederhana :)Jawaban:
A
FileList
bukan anArray
, tetapi sesuai dengan kontraknya (memilikilength
dan indeks numerik), jadi kita dapat "meminjam"Array
metode:Karena Anda jelas menggunakan ES6, Anda juga bisa membuatnya sesuai
Array
, menggunakanArray.from
metode baru :sumber
Building.vue?92ca:292 Uncaught (in promise) TypeError: Cannot convert undefined or null to object(…)
denganArray.from
.field.photo.files
? Saya tidak memeriksa itu ...field.photo.files
persis seperti yangconsole.log
ditunjukkan dalam pertanyaan saya.[...field.photo.files].map(file => {});
Anda juga dapat mengulang dengan sederhana untuk:
sumber
Di ES6 Anda dapat menggunakan:
Referensi: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
sumber
The lodash perpustakaan memiliki _forEach metode yang loop melalui semua entitas koleksi, seperti array dan objek, termasuk FileList:
sumber
Kode berikut ada di Skrip Ketik
sumber
Jika Anda menggunakan Ketik Anda dapat melakukan sesuatu seperti ini: Untuk 'file' variabel dengan tipe FileList [] atau File [] gunakan:
sumber