इस ट्यूटोरियल में, आप उदाहरणों की मदद से जावास्क्रिप्ट पुनरावृत्तियों और पुनरावृत्तियों के बारे में जानेंगे।
जावास्क्रिप्ट 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
- किया संपत्ति एक बूलियन मान कि इंगित करता है यात्रा पूरी है या नहीं है। यदि पुनरावृत्ति अपूर्ण है, तो संपत्ति सेट की जाती है , अन्यथा इसे सेट किया जाता है ।
done
done
false
true
चलो सरणी पुनरावृत्तियों का एक उदाहरण देखें:
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
।