[javascript] forEach를 Filelist와 함께 사용할 수 없습니다.

나는 루프를 통해 시도하고있다 Filelist:

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

당신이 볼 수 있듯이 것은 field.photo.files있습니다 Filelist:

여기에 이미지 설명 입력

제대로 반복하는 방법 field.photo.files?



답변

A는 FileList아니다 Array, 그러나 그것의 계약을 준수 않습니다 (이 length및 숫자 인덱스), 우리가 할 수있는 “차용”그래서 Array방법 :

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

분명히 ES6를 사용하고 있기 때문에 Array새로운 Array.from방법을 사용하여 적절하게 만들 수도 있습니다 .

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


답변

다음과 같은 간단한 방법으로 반복 할 수도 있습니다.

var files = field.photo.files;

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


답변

ES6에서는 다음을 사용할 수 있습니다.

[...field.photo.files].forEach(file => console.log(file));

참조 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment


답변

lodash의 라이브러리는이 _forEach의 방법을 그 같은 파일 목록을 포함하여 배열과 객체, 모든 수집 기관을 통해 루프 :

_.forEach(field.photo.files,(file => {
     // looping code
})


답변

다음 코드는 Typescript에 있습니다.

     urls = new Array<string>();

     detectFiles(event) {
       const $image: any = document.querySelector('#file');
       Array.from($image.files).forEach((file: any) => {
       let reader = new FileReader();
       reader.onload = (e: any) => { this.urls.push(e.target.result); }
       reader.readAsDataURL(file);
      }
    }


답변

Typescript를 사용하는 경우 다음과 같이 할 수 있습니다. FileList [] 또는 File [] 유형의 변수 ‘files’에 대해 다음을 사용하십시오.

for(let file of files){
    console.log('line50 file', file);
  }


답변