ফাইললিস্ট সহ প্রতিটি জন্য ব্যবহার করতে পারবেন না


133

আমি একটি মাধ্যমে লুপ করার চেষ্টা করছি Filelist:

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

আপনি দেখতে পারেন field.photo.filesএর একটি রয়েছে Filelist:

এখানে চিত্র বর্ণনা লিখুন

কিভাবে সঠিকভাবে লুপ মাধ্যমে field.photo.files?


2
Array.prototype.forEach.call(field.photo.files, file => console.log(file));
টোলগাহান আলবায়রাক

এটা কোন অ্যারে না? এটি কি নোড.জেএস?
কনসেক্স

@ কনেক্সেক্সো: না, field.photo.filesএকটি অবজেক্টটি প্রোটোটাইপড আছে FileList; ঠিক HTMLCollection, এটা নেই Array.prototypeতার প্রোটোটাইপ চেন।
আমদান

সাধারণ for loopকাজ :)
রেজা

উত্তর:


265

FileListএকটি নয় Array, তবে এটি তার চুক্তির সাথে সামঞ্জস্য করে (রয়েছে lengthএবং সংখ্যাসূচক সূচকগুলি), তাই আমরা "orrowণ" Arrayপদ্ধতিগুলি নিতে পারি :

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

যেহেতু আপনি স্পষ্টতই ES6 ব্যবহার করছেন তাই আপনি Arrayনতুন Array.fromপদ্ধতিটি ব্যবহার করে এটি একটি যথাযথ করে তুলতে পারেন :

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

স্ট্রেঞ্জ, আমি এই পাবেন: Building.vue?92ca:292 Uncaught (in promise) TypeError: Cannot convert undefined or null to object(…)সঙ্গে Array.from
অ্যালেক্স

ঠিক আছে, আপনি কি নিশ্চিত যে আপনার পরিবর্তনশীল field.photo.files? আমি এটি যাচ্ছিলাম না ...
আমদান

আমার প্রশ্নে আমাদান field.photo.filesঠিক কী console.logদেখায়।
অ্যালেক্স

@ আমদান দান, এটি টাইপো ছিল। দুঃখিত।
অ্যালেক্স

11
আপনি স্প্রেড অপারেটরটিও ব্যবহার করতে পারেন[...field.photo.files].map(file => {});
হেনরিখ কান্টুনি



3

Lodash গ্রন্থাগার টি _forEach পদ্ধতি যে এই ধরনের অ্যারে এবং বস্তু, FileList সহ সব সংগ্রহ সত্ত্বা, মাধ্যমে লুপ:

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

0

নিম্নলিখিত কোডটি টাইপস্ক্রিপ্টে রয়েছে

     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);
      }
    }

-2

আপনি যদি টাইপস্ক্রিপ্ট ব্যবহার করে থাকেন তবে আপনি এই জাতীয় কিছু করতে পারেন: ফাইললিস্ট [] বা ফাইল [] ব্যবহারের সাথে একটি চলক 'ফাইলগুলির জন্য':

for(let file of files){
    console.log('line50 file', file);
  }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.