जावास्क्रिप्ट Iterators और Iterables

इस ट्यूटोरियल में, आप उदाहरणों की मदद से जावास्क्रिप्ट पुनरावृत्तियों और पुनरावृत्तियों के बारे में जानेंगे।

जावास्क्रिप्ट Iterables और Iterators

जावास्क्रिप्ट डेटा संरचनाओं पर पुनरावृति करने के लिए एक प्रोटोकॉल प्रदान करता है। यह प्रोटोकॉल परिभाषित करता है कि for… ofलूप का उपयोग करके ये डेटा संरचनाएं कैसे पुनरावृत्त होती हैं ।

प्रोटोकॉल की अवधारणा में विभाजित किया जा सकता है:

  • चलने योग्य
  • यात्रा करनेवाला

Iterable प्रोटोकॉल में उल्लेख किया गया है कि एक iterable Symbol.iteratorकुंजी होनी चाहिए ।

जावास्क्रिप्ट Iterables

जिस डेटा संरचना में Symbol.iterator()विधि होती है उसे पुनरावृत्तियाँ कहा जाता है। उदाहरण के लिए, अर्रेज़, स्ट्रिंग्स, सेट्स इत्यादि।

जावास्क्रिप्ट Iterators

एक पुनरावृत्ति एक वस्तु है जिसे Symbol.iterator()विधि द्वारा वापस किया जाता है।

इटरेटर प्रोटोकॉल next()एक बार में चलने योग्य (डेटा संरचना) के प्रत्येक तत्व तक पहुंचने की विधि प्रदान करता है ।

आइए होने वाले पुनरावृत्तियों के एक उदाहरण को देखें Symbol.Iterator()

 const arr = (1, 2 ,3); // calling the Symbol.iterator() method const arrIterator = arr(Symbol.iterator)(); // gives Array Iterator console.log(arrIterator); const str = 'hello'; // calling the Symbol.iterator() method const strIterator = str(Symbol.iterator)(); // gives String Iterator console.log(strIterator);

आउटपुट

 सरणी Iterator () StringIterator ()

यहां, Symbol.iterator()एरे और स्ट्रिंग दोनों की विधि को कॉल करके उनके संबंधित पुनरावृत्तियों को लौटाता है।

Iterate Iterables के माध्यम से

आप for… ofइन पुनरावृत्त वस्तुओं के माध्यम से पुनरावृति करने के लिए लूप का उपयोग कर सकते हैं । आप Symbol.iterator()इस तरह विधि के माध्यम से पुनरावृति कर सकते हैं

 const number = ( 1, 2, 3); for (let n of number(Symbol.iterator)()) ( console.log(n); )

आउटपुट

 १ २ ३

या आप बस इस तरह सरणी के माध्यम से पुनरावृति कर सकते हैं:

 const number = ( 1, 2, 3); for (let n of number) ( console.log(n); )

यहाँ, for… ofपुनरावृत्त लूप को एक सरणी पर पुनरावृत्त करने और प्रत्येक मान को वापस करने की अनुमति देता है ।

जावास्क्रिप्ट अगला () विधि

इटरेटर ऑब्जेक्ट में एक next()विधि है जो अनुक्रम में अगले आइटम को लौटाता है।

next()विधि दो गुण शामिल हैं: valueऔर done

  • मूल्य संपत्ति किसी भी डेटा प्रकार का हो सकता है और इस क्रम में वर्तमान मूल्य का प्रतिनिधित्व करता जा सकता है।
    value
  • किया संपत्ति एक बूलियन मान कि इंगित करता है यात्रा पूरी है या नहीं है। यदि पुनरावृत्ति अपूर्ण है, तो संपत्ति सेट की जाती है , अन्यथा इसे सेट किया जाता है ।
    donedonefalsetrue

चलो सरणी पुनरावृत्तियों का एक उदाहरण देखें:

 const arr = ('h', 'e', 'l', 'l', 'o'); let arrIterator = arr(Symbol.iterator)(); console.log(arrIterator.next()); // (value: "h", done: false) console.log(arrIterator.next()); // (value: "e", done: false) console.log(arrIterator.next()); // (value: "l", done: false) console.log(arrIterator.next()); // (value: "l", done: false) console.log(arrIterator.next()); // (value: "o", done: false) console.log(arrIterator.next()); // (value: undefined, done: true)

आप next()किसी arrIteratorवस्तु पर पुनरावृति के लिए बार-बार कॉल कर सकते हैं ।

  • next()विधि दो गुणों के साथ एक वस्तु देता है: valueऔर done
  • जब next()विधि अनुक्रम के अंत तक पहुंचती है, तो doneसंपत्ति सेट की जाती है false

आइए देखें कि for… ofलूप उपरोक्त कार्यक्रम को कैसे निष्पादित करता है। उदाहरण के लिए,

 const arr = ('h', 'e', 'l', 'l', 'o'); for (let i of arr) ( console.log(i); )

आउटपुट

 नमस्कार

for… ofपाश वास्तव में उपरोक्त कार्यक्रम के रूप में ही है।

for… ofपाश बुला रहता next()पुनरावर्तक पर विधि। एक बार जब यह पहुंचता है done:true, तो for… ofलूप समाप्त हो जाता है।

उपयोगकर्ता निर्धारित Iterator

आप next()अगले तत्व तक पहुंचने के लिए अपना स्वयं का पुनरावृत्तिकर्ता और कॉल भी बना सकते हैं । उदाहरण के लिए,

 function displayElements(arr) ( // to update the iteration let n = 0; return ( // implementing the next() function next() ( if(n < arr.length) ( return ( value: arr(n++), done: false ) ) return ( value: undefined, done: true ) ) ) ) const arr = ('h', 'e', 'l', 'l', 'o'); const arrIterator = displayElements(arr); console.log(arrIterator.next()); console.log(arrIterator.next()); console.log(arrIterator.next()); console.log(arrIterator.next()); console.log(arrIterator.next()); console.log(arrIterator.next());

आउटपुट

 (मान: "एच", किया: गलत) (मूल्य: "ई", किया: गलत) (मूल्य: "एल", किया: गलत) (मूल्य: "एल", किया: गलत) (मूल्य: "ओ" , किया: असत्य) (मान: अपरिभाषित, किया गया: सत्य)

उपरोक्त कार्यक्रम में, हमने अपना स्वयं का इट्रेटर बनाया है। displayElements()समारोह रिटर्न valueऔर doneसंपत्ति।

  • हर बार जब next()विधि को बुलाया जाता है, तो फ़ंक्शन एक बार निष्पादित हो जाता है और एक सरणी का मान प्रदर्शित करता है।
  • अंत में, जब सब एक सरणी के तत्वों के समाप्त होने पर doneसंपत्ति के लिए निर्धारित है trueके साथ, valueके रूप में undefined

दिलचस्प लेख...