पब्लिश होने की तारीख: 1 मई, 2025
JavaScript लिखने वाले लोग, बार-बार दोहराने की सुविधा का ज़्यादा इस्तेमाल करते हैं. आपने ऐरे के साथ काम करने के लिए लूप लिखे हैं या सभी तरह के डेटा को प्रोसेस करने के लिए, फ़ंक्शनल प्रोग्रामिंग के तरीकों का इस्तेमाल किया है. जैसे, map
, filter
वगैरह.
हालांकि, इन तरीकों का इस्तेमाल करने में एक समस्या यह है कि ये सिर्फ़ ऐरे पर उपलब्ध हैं. अगर आपको इनका इस्तेमाल किसी आइटम के क्रम में इस्तेमाल किए जा सकने वाले कलेक्शन पर करना है, तो आपको उसे ऐरे में बदलना होगा. इसके बाद, अपनी ज़रूरत के हिसाब से कोई तरीका चुनना होगा. ऐसा करने से, ज़रूरत से ज़्यादा मेमोरी का इस्तेमाल हो सकता है. इसके अलावा, अगर इंटरेबल में जनरेटर फ़ंक्शन का इस्तेमाल करके अनलिमिटेड डेटासेट शामिल है, तो ऐसा करना मुमकिन नहीं है. हालांकि, अब जब कि iterator helper, Baseline के तौर पर उपलब्ध हैं, तो यह सुविधा सभी ब्राउज़र पर उपलब्ध है.
आइटरेटर हेल्पर कैसे काम करते हैं?
Iterator
ऑब्जेक्ट के prototype
पर नए तरीके तय करके, Iterator हेल्पर को एक्सपोज़ किया जाता है. ये तरीके, फ़ंक्शनल प्रोग्रामिंग के कई तरीकों के साथ अलाइन होते हैं. जैसे, map
, filter
, reduce
, और इसी तरह के अन्य तरीके.
उदाहरण के लिए, filter
तरीके पर मौजूद, आइटम को फ़िल्टर करने के लिए, आइटम की innerText
प्रॉपर्टी के कॉन्टेंट का इस्तेमाल किया जा सकता है. ऐसा करने के लिए, DOM नोड के कलेक्शन का इस्तेमाल किया जाता है. इसके बाद, इस कलेक्शन का इस्तेमाल for
लूप में किया जा सकता है:
const posts = document.querySelectorAll("ul#specific-list > li")
.values()
.filter(item => item.textContent.includes("kiwi"));
// For-of loops can only be used on iterables, which `posts` is!
for (const post of posts) {
console.log(post.textContent);
}
पिछले कोड स्निपेट में, filter
के लिए, 'इटरेट करने वाले हेल्पर' तरीके का इस्तेमाल किया गया है. इसका मकसद, किसी खास <ul>
एलिमेंट में मौजूद सभी <li>
एलिमेंट को दोहराना है. फ़िल्टर करने की शर्त यह है कि हर एलिमेंट के टेक्स्ट कॉन्टेंट में "kiwi"
की सबस्ट्रिंग होनी चाहिए.
Iterator हेल्पर का इस्तेमाल, जनरेटर फ़ंक्शन के साथ भी किया जा सकता है. इस उदाहरण में, एक जनरेटर फ़ंक्शन है जो फ़ैक्टरियल का हिसाब लगाता है. हालांकि, यह फ़ंक्शन आइटरेटर हेल्पर का इस्तेमाल करके, वैल्यू को 8 से भाग देने पर मिलने वाली वैल्यू में फ़िल्टर करता है. साथ ही, फ़िल्टर की गई पहली पांच वैल्यू को कंसोल में लॉग करता है:
function* factorials (n) {
let result = 1;
for (let i = 1; i <= n; i++) {
result *= i;
yield result;
}
}
const filteredFactorials = factorials(128).filter(x => x % 8 === 0);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
खास तौर पर, ऊपर दिया गया कोड स्निपेट एक ऐसे उदाहरण का है जो फ़ैक्टरियल की अनलिमिटेड वैल्यू के लिए, फ़ंक्शन के तौर पर ��स्तेमाल नहीं किया जा सकता. ऐसा इसलिए, क्योंकि फ़ैक्टरियल की वैल्यू को ऐरे में नहीं बदला जा सकता!
आपकी स्थिति के हिसाब से, आइटरेटर हेल्पर का इस्तेमाल कई तरह से किया जा सकता है. ये आइटरेबल वाले इन सभी तरीकों के लिए उपलब्ध हैं:
कई तरह के कामों के लिए, iterator helper का इस्तेमाल किया जा सकता है. इससे डेवलपर को ज़्यादा आसानी से काम करने में मदद मिलती है. अब ये बेसलाइन के तौर पर उपलब्ध हैं. इसलिए, आपको समय के साथ यह भरोसा बढ़ता जाएगा कि इनका इस्तेमाल, काम करने से जुड़ी समस्याओं के डर के बिना किया जा सकता है. ज़्यादा जानकारी के लिए, ये संसाधन देखें: