Iterators এর ব্যবহার এবং সুবিধা

Iterators এবং Iterables - জাভাস্ক্রিপ্ট ইএস৬ (ES6) - Web Development

326

ES6 (ECMAScript 2015) এ Iterator এবং Iterable কনসেপ্টগুলি চালু করা হয়েছে, যা JavaScript এ আরও উন্নত এবং কার্যকরী ডেটা ট্রাভার্সাল (data traversal) এবং কন্টেইনার ডেটা স্ট্রাকচার তৈরির জন্য সহায়ক। এগুলোর মাধ্যমে আপনি একটি ডেটা স্ট্রাকচার (যেমন Array, Map, Set) এর উপর সহজে iteration (পর্যায়ক্রমে উপাদান গুলোর মধ্য দিয়ে যাওয়া) করতে পারেন।


Iterator কী?

Iterator হলো একটি অবজেক্ট যা আপনাকে একটি Iterable ডেটা স্ট্রাকচারের (যেমন Array বা Set) উপর এক এক করে গেট (access) করতে সক্ষম করে। এটা এক ধরনের অবজেক্ট যা next() মেথড প্রদান করে, যেটি পরবর্তী মান রিটার্ন করে।

Iterator এর মধ্যে দুটি মূল প্রপার্টি থাকে:

  • value: পরবর্তী মান যা রিটার্ন করা হয়েছে।
  • done: একটি বুলিয়ান (boolean) মান যা জানায় যে iteration শেষ হয়েছে কিনা। যদি সব উপাদান iterated হয়ে যায়, তবে এটি true হয়ে যাবে।

Iterable কী?

Iterable একটি অবজেক্ট যা Iterator প্রদান করতে পারে। সহজভাবে, এটি এমন একটি অবজেক্ট যা Symbol.iterator মেথড সমর্থন করে। উদাহরণস্বরূপ, Array, Set, Map এবং এমনকি String ইত্যাদি iterable অবজেক্ট।

যেকোনো iterable অবজেক্টের উপর iteration করার জন্য আপনি for...of লুপ ব্যবহার করতে পারেন, যা Symbol.iterator মেথডকে কল করে।


Iterator এর ব্যবহার

Basic Iterator Example

এখানে একটি সাধারণ iterator তৈরি করার উদাহরণ দেওয়া হল:

const array = [10, 20, 30];

const iterator = array[Symbol.iterator](); // Iterator তৈরি

console.log(iterator.next()); // { value: 10, done: false }
console.log(iterator.next()); // { value: 20, done: false }
console.log(iterator.next()); // { value: 30, done: false }
console.log(iterator.next()); // { value: undefined, done: true }

এখানে, array[Symbol.iterator]() ব্যবহার করে iterator তৈরি করা হয়েছে। next() মেথড প্রতিটি মান রিটার্ন করে এবং done: true জানায় যে iteration শেষ হয়েছে।


Iterable Object Example

আপনি যদি কোনো অবজেক্টকে iterable বানাতে চান, তাহলে আপনাকে Symbol.iterator মেথড ব্যবহার করতে হবে।

উদাহরণ:

const myIterable = {
  data: [1, 2, 3],
  [Symbol.iterator]() {
    let index = 0;
    const data = this.data;
    
    return {
      next() {
        if (index < data.length) {
          return { value: data[index++], done: false };
        } else {
          return { value: undefined, done: true };
        }
      }
    };
  }
};

const iterator = myIterable[Symbol.iterator]();
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { value: undefined, done: true }

এখানে, Symbol.iterator মেথড দিয়ে একটি অবজেক্টকে iterable করা হয়েছে এবং তারপর সেই অবজেক্টের উপর iteration করা হয়েছে।


For...of লুপের মাধ্যমে Iteration

for...of লুপ ব্যবহার করে iterable ডেটা স্ট্রাকচারের উপাদানগুলোর উপর iteration করা সহজ। এটি next() মেথডের সাথে কাজ করে, কিন্তু for...of এর মাধ্যমে আপনি সরাসরি উপাদানগুলো অ্যাক্সেস করতে পারেন।

উদাহরণ:

const array = [1, 2, 3];

for (const value of array) {
  console.log(value);  // 1, 2, 3
}

এখানে, for...of লুপ দিয়ে আমরা সরাসরি array এর উপাদানগুলোর উপর iteration করেছি। এটি Iterator এর next() মেথডের সাথে কাজ করে, কিন্তু কোডটি অনেক সহজ এবং পরিষ্কার হয়।


Iterator এবং Iterable এর সুবিধা

1. Custom Iteration Logic:

যখন আপনি একটি কাস্টম iterable অবজেক্ট তৈরি করেন, তখন আপনি iteration এর আচরণ কাস্টমাইজ করতে পারেন। যেমন, আপনি যদি একটি অবজেক্টের মধ্যে থাকা কিছু নির্দিষ্ট মানের উপর iteration করতে চান, তবে আপনি Symbol.iterator মেথডের ভিতরে সেই লজিকটি নির্ধারণ করতে পারেন।

2. Data Structure Traversal:

Iterator এবং Iterable এর মাধ্যমে বিভিন্ন ধরনের ডেটা স্ট্রাকচার যেমন Array, Set, Map ইত্যাদি ট্রাভার্স (পাড়) করা সহজ হয়ে যায়। আপনি for...of বা next() মেথডের মাধ্যমে উপাদানগুলো একে একে বের করতে পারেন।

3. Lazy Evaluation:

Iterator অনেক সময় lazy evaluation এর মতো কাজ করতে পারে, যেখানে পরবর্তী উপাদানটি কেবল তখনই রিটার্ন হয় যখন তা প্রয়োজন। এটি আপনার কোডের পারফরমেন্স এবং মেমরি ব্যবস্থাপনায় সহায়ক হতে পারে, বিশেষ করে বড় ডেটা সেটগুলোর ক্ষেত্রে।

4. Code Clarity and Readability:

Iterator এবং Iterable ব্যবহারের মাধ্যমে আপনার কোড আরও পরিষ্কার এবং সোজা হয়ে যায়, কারণ এটি আপনাকে একটি সাধারণ এবং সংগঠিত পদ্ধতিতে iteration করতে সাহায্য করে।


Conclusion

ES6 এর Iterator এবং Iterable কনসেপ্টগুলো JavaScript কোডের কার্যকারিতা এবং পরিষ্কারতা বাড়াতে সাহায্য করে। এগুলোর মাধ্যমে আপনি সহজেই বিভিন্ন ডেটা স্ট্রাকচারের উপাদানগুলোর উপর iteration করতে পারেন এবং কাস্টম iteration লজিক তৈরি করতে পারেন। for...of লুপ ব্যবহার করে এই iteration আরও সহজ এবং কার্যকরী করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...