2016-12-01 38 views
9

ben döngü çalışıyorum ile forEach kullanılamaz: Eğer field.photo.files görebileceğiniz gibibir <code>Filelist</code> aracılığıyla Filelist

console.log('field:', field.photo.files) 
field.photo.files.forEach(file => { 
    // looping code 
}) 

olan bir Filelist:

enter image description here

Nasıl aracılığıyla düzgün döngü için field.photo.files?

+1

'Array.prototype.forEach.call (field.photo.files, file => console.log (dosya));' –

+0

Bu bir dizi değil mi? Bu node.js mi? – connexo

+0

@connexo: Hayır, field.photo.files' 'FileList' üzerinde prototiplenmiş bir nesnedir; "HTMLCollection" gibi, prototip zincirinde "Array.prototype" özelliği yoktur. – Amadan

cevap

39

A FileList bir Array değil, ama onun sözleşme uyuyor mu (length ve sayısal indeksleri vardır), bu yüzden "ödünç" Array yöntemleri yapabilirsiniz: Açıkçası ES6 kullandığınız için

Array.prototype.forEach.call(field.photo.files, function(file) { ... }); 

,

Array.from(field.photo.files).forEach(file => { ... }); 
+0

Bu tür küçük bir bilgiyi cevap olarak verebileceğimi bilmiyordum. Bilseydim, yorum yapmak yerine cevap olarak paylaşırdım. –

+2

Sadece yorum ile gerçekten faydalı bir cevap haline gelir. – connexo

+0

Düzenlemeler ve yeni bilgilerden sonra, artık daha fazla "cevap" görünüyor. +1 –

2

Ayrıca basit bir ile yineleyebilirsiniz:: Ayrıca yeni Array.from yöntemi kullanarak, bunu bir düzgün Array yapabiliriz

var files = field.photo.files; 

for (var i = 0; i < files.length; i++) { 
    console.log(files[i]); 
}