यह एक उदास सोमवार है, और आप काम पर हैं। हम सभी जानते हैं कि सोमवार कितना निराशाजनक हो सकता है, है न? आपका बॉस आपके पास आता है और कहता है, "अरे, मेरे पास सप्ताहांत में प्राप्त 300 बिना खोले गए ईमेल हैं। मैं चाहता हूँ कि आप हर एक को खोलें, प्रेषक का नाम लिखें, और काम पूरा होने के बाद ईमेल को हटा दें।" यदि आप इसे मैन्युअली करने का प्रयास करते हैं तो यह कार्य बहुत थकाऊ लगता है। आपके दिमाग में अगली बात शायद यह होगी कि आप Google पर जाएं और ऐसे सॉफ़्टवेयर की तलाश करें जो इस प्रक्रिया को स्वचालित कर सके और आपके जीवन को आसान बना सके, है न? खैर, प्रोग्रामिंग में भी ऐसी ही परिस्थितियाँ होती हैं। कई बार ऐसा होता है कि आपको तब तक दोहराए जाने वाले कार्य करने पड़ते हैं जब तक कि वे पूरे न हो जाएँ। आप इस समस्या का समाधान कैसे करते हैं? जावास्क्रिप्ट में, हमारे पास लूप्स होते हैं। लूप्स हमें कार्य को पूरा करने के लिए आवश्यक कोड की मात्रा को कम करके दोहराए जाने वाले कार्यों को हल करने की अनुमति देते हैं। इस लेख में हम चर्चा करेंगे कि लूप क्या है, यह कैसे काम करता है, तथा इसे अपने प्रोग्राम में लागू करने के लिए हम कौन-कौन सी विभिन्न विधियां अपना सकते हैं। लूप क्या है? जावास्क्रिप्ट में लूप का उपयोग बार-बार दोहराए जाने वाले कार्यों को आसानी से करने के लिए किया जाता है। वे एक शर्त पर आधारित होते हैं जो सत्य या असत्य लौटाता है। शर्त एक अभिव्यक्ति है जिसे लूप को चालू रखने के लिए पास किया जाना चाहिए। जब निर्दिष्ट शर्तें सत्य मान लौटाती हैं तो लूप चलता है और जब वे गलत मान लौटाती हैं तो रुक जाता है। आपको लूप का उपयोग कब करना चाहिए? लूप दोहराए जाने वाले कार्यों को करने के लिए उपयोगी होते हैं। उदाहरण के लिए, लूप का उपयोग करने से किसी समस्या को हल करने के लिए आवश्यक कोड छोटा हो जाता है। यह समय बचाता है, मेमोरी उपयोग को अनुकूलित करता है, और लचीलेपन में सुधार करता है। लूप का असली महत्व कोड की लंबाई कम करने और दोहराव को सीमित करने से कहीं आगे तक फैला हुआ है। वे सरणी, ऑब्जेक्ट या अन्य संरचनाओं में डेटा के साथ काम करते समय भी मदद करते हैं। इसके अलावा, लूप दोहराव वाले कोड को कम करके और कोड की पुन: प्रयोज्यता को बढ़ाकर कोड मॉड्यूलरिटी को बढ़ावा देते हैं, जिससे ऐसे कोड बनाना संभव हो जाता है जिन्हें आपके प्रोजेक्ट के विभिन्न हिस्सों में इस्तेमाल किया जा सकता है। लूप के प्रकार लूप की दो प्रमुख श्रेणियां हैं: प्रवेश-नियंत्रित लूप और निकास-नियंत्रित लूप। लूप लूप के बॉडी को निष्पादित करने से पहले "लूप के प्रवेश द्वार" पर स्थिति का मूल्यांकन करते हैं। यदि स्थिति सत्य है, तो बॉडी चलती है। यदि नहीं, तो बॉडी नहीं चलती। और लूप एंट्री-नियंत्रित लूप के उदाहरण हैं। एंट्री-नियंत्रित for while लूप परीक्षण स्थिति पर लूप के बॉडी पर ध्यान केंद्रित करते हैं, यह सुनिश्चित करते हुए कि परीक्षण स्थिति का मूल्यांकन करने से पहले लूप के बॉडी को कम से कम एक बार निष्पादित किया जाता है। एग्जिट-नियंत्रित लूप का एक अच्छा उदाहरण लूप है। एग्जिट-नियंत्रित do-while आइये प्रवेश-नियंत्रित लूपों के कुछ उदाहरणों की जांच करें: घुमाव के दौरान लूप का सिंटैक्स इस प्रकार है। while while (condition) { // loop's body } निम्नलिखित सूची while लूप की कार्यक्षमता को समझाती है: लूप कोष्ठक के अंदर परीक्षण स्थिति लेता है। while प्रोग्राम यह देखने के लिए स्थिति की जांच करता है कि यह पास हुआ या असफल। जब तक शर्त पारित होती है, लूप के बॉडी के भीतर कोड निष्पादित होता है। परीक्षण स्थिति विफल होने पर प्रोग्राम अपना संचालन समाप्त कर देता है। नीचे, आइए लूप का एक व्यावहारिक उदाहरण लें: while let arr = []; let i = 1; let number = 5; while (i <= number) { arr.push(i) i++ } console.log(arr) उपरोक्त कोड स्निपेट "arr", "i", और "num" चरों को आरंभीकृत करता है। " चर एक सारणी है जो परीक्षण शर्त को पास करने वाले मानों को रखती है। arr " "i" चर प्रत्येक पुनरावृत्ति के बाद प्रत्येक वृद्धि का ट्रैक रखता है। "संख्या" चर प्रत्येक पुनरावृत्ति के बाद "i" के मान की तुलना उसके मान (5) से करता है। लूप के मुख्य भाग में कोड प्रत्येक पुनरावृत्ति के बाद "i" के प्रत्येक मान को सारणी में धकेलता है, जब तक कि "i" "संख्या" से कम या उसके बराबर हो। एक बार जब "i" का वर्तमान मान शर्त को पूरा नहीं कर पाता है, इस स्थिति में, जहां का मान जो कि 6 है, से अधिक है, तो लूप चलना बंद हो जाता है। "i" "संख्या" विधि एक अंतर्निहित जावास्क्रिप्ट फ़ंक्शन है जो किसी सारणी के अंत में एक नया आइटम जोड़ता है। push() उत्पादन [1, 2, 3, 4, 5] do-while लूप लूप, while लूप से काफी मिलता-जुलता है; और लूप के बीच मुख्य अंतर यह है कि लूप, लूप की स्थिति का मूल्यांकन करने से पहले कम से कम एक बार कोड निष्पादन सुनिश्चित करता है; लूप का नीचे दिया गया सिंटैक्स है। do-while while do-while do-while do-while do { // loop's body } while (//condition) एक एक्जिट-नियंत्रित लूप का एक बेहतरीन उदाहरण है। यह इस तथ्य में निहित है कि एक्जिट-नियंत्रित लूप परीक्षण स्थिति से पहले लूप के शरीर को देते हैं, अब आइए लूप का उपयोग करते हुए एक व्यावहारिक कोड उदाहरण पर गौर करें। do-while प्राथमिकता do-while उदाहरण: let i = 1; let num = 5; do { console.log(i); i++; } while (i <= num); अब, आइए इस कोड स्निपेट को तोड़ें: हमने "i" और "num" चरों को आरंभीकृत किया। कंसोल लूप की स्थिति का मूल्यांकन करने से पहले "i" (1) का मान लॉग करता है। शर्त की जाँच की जाती है, तथा प्रत्येक पुनरावृत्ति के बाद "i" का मान +1 से बढ़ जाता है। जब "i" "num" से बड़ा हो जाता है तो लूप अपना संचालन समाप्त कर देता है। उत्पादन 1 2 3 4 5 यद्यपि लूप, लूप से बहुत अधिक मिलता-जुलता है, फिर भी कुछ सूक्ष्म अंतर हैं जिन पर हमें ध्यान देना चाहिए; आइए एक और उदाहरण लेते हैं जो और लूप के बीच अंतर की तुलना करता है। do-while while while do-while let i = 5; let num = 4 while( i < num) { console.log(i) } उपरोक्त लूप कंसोल पर कोई परिणाम नहीं लौटाएगा; अब, ऐसा क्यों है? while हमने "i" और "num" चरों को क्रमशः 5 और 4 के मानों से आरंभ किया। यह शर्त जाँचती है कि क्या "i" का मान "num" से कम है। यदि सत्य है, तो यह प्रत्येक संबंधित मान को लॉग इन करता है। चूँकि "i" का प्रारंभिक मान "num" से अधिक है, इसलिए लूप कभी नहीं चलता। अब, आइए लूप के साथ एक समान उदाहरण लेते हैं। do-while let i = 5; let num = 4; do { console.log(i) } while ( i < num) उत्पादन 5 लूप कोड ब्लॉक के निष्पादन को सुनिश्चित करता है, जो कंसोल में 5 लौटाता है, हालाँकि "i" का मान "num" से ज़्यादा है, फिर भी इसे कंसोल में एक बार लॉग किया जाता है। यह प्रतिनिधित्व आपको और लूप के बीच कार्यक्षमता में अंतर दिखाता है। do-while do-while while पाश के लिए एक अनोखा प्रकार का लूप है और प्रोग्रामर द्वारा सबसे अधिक इस्तेमाल किए जाने वाले लूप में से एक है, एक ऐसा लूप है जो किसी शर्त के आधार पर एक कोड ब्लॉक को एक निश्चित संख्या में बार चलाता है। फॉर लूप का सिंटैक्स नीचे दिया गया है। for loop for loop for (Expression1...; Expression2....; Expression3...{ //code block } अभिव्यक्ति 1: के इस भाग को क्षेत्र के रूप में भी जाना जाता है; यह हमारे की शुरुआत है और वह क्षेत्र है जहाँ काउंटर वैरिएबल परिभाषित किया गया है। काउंटर वैरिएबल का उपयोग लूप के चलने की संख्या को ट्रैक करने और उसे मान के रूप में संग्रहीत करने के लिए किया जाता है। for loop इनिशियलाइज़ेशन for loop अभिव्यक्ति 2: यह लूप का दूसरा भाग है; यह भाग कथन को परिभाषित करता है जो लूप को निष्पादित करेगा। सशर्त अभिव्यक्ति 3: यह वह स्थान है जहां लूप समाप्त होता है; इस अनुभाग में काउंटर चर प्रत्येक पुनरावृत्ति के बाद शर्त में निर्दिष्ट मान को बढ़ाकर या घटाकर अपना मान अद्यतन करता है। आइये फॉर लूप का उपयोग करके एक उदाहरण देखें। for (let i = 0; i < 100; i++) { console.log("Hello World" ) } उपरोक्त कोड स्निपेट से, आइए इसे एक साथ तोड़ें। सबसे पहले, हमने काउंटर चर " शून्य मान के साथ आरंभीकृत किया है। i" को इसके बाद, हमने सशर्त कथन बनाया है जो कोड को चालू रखेगा। हमने "i" के मान की तुलना 100 से की; यदि यह परीक्षण पास हो जाता है, तो "Hello World" लॉग किया जाता है। यह प्रक्रिया दोहराई जाती है जबकि प्रत्येक पुनरावृत्ति के बाद काउंटर +1 से बढ़ता है। काउंटर का मान 100 तक पहुंचने पर लूप समाप्त हो जाता है। उत्पादन Hello World Hello World Hello World ... //repeated 97 more times making it 100 "Hello World" in total ... प्रत्येक लूप के लिए लूप जावास्क्रिप्ट में एक विधि है जो एक सरणी के माध्यम से यात्रा करती है और उस सरणी में प्रत्येक तत्व पर एक कॉलबैक फ़ंक्शन लागू करती है; एक कॉलबैक फ़ंक्शन बस एक फ़ंक्शन में पैरामीटर के रूप में पारित किया गया एक और फ़ंक्शन है। कॉलबैक फ़ंक्शन मुख्य फ़ंक्शन के निष्पादन के बाद क्रमिक रूप से चलने के द्वारा काम करता है। for-each आइये लूप के मूल सिंटैक्स की जांच करें। for-each array.forEach(function(currentValue, index, arr)) ऊपर दिया गया कोड लूप की कार्यप्रणाली को समझाता है। for-each यह लूप तीन पैरामीटर स्वीकार करता है, जो वर्तमान मान, एक इंडेक्स और एक सरणी हैं। वर्तमान मान सरणी में तत्व के वर्तमान मान का प्रतिनिधित्व करता है। सूचकांक एक वैकल्पिक पैरामीटर है जो आपको उस सारणी में वर्तमान तत्व की क्रमांकित स्थिति बताता है। arr एक अन्य वैकल्पिक पैरामीटर है जो आपको बताता है कि तत्व किस सरणी से संबंधित है। let myArray = [1, 2, 3, 4, 5]; array.forEach((num, index, arr) => { arr[index] = num * 2; console.log(array); }); आइये उपरोक्त उदाहरण को समझें: हमने "myArray" नामक चर नाम से एक सारणी को आरंभीकृत किया तथा उसे 1 से 5 तक के पूर्णांकों के साथ संग्रहीत किया। array विधि तीन पैरामीटर लेती है और array पर कॉलबैक फ़ंक्शन लागू करती है। for-each यह पंक्ति; वर्तमान तत्व के मान को 2 से गुणा करती है और लौटाए गए मान को वर्तमान तत्व के सूचकांक में निर्दिष्ट करती है। arr[index] = num * 2 ध्यान दें: array विधि एक नई array नहीं लौटाती है; बल्कि, यह मूल array को संशोधित करती है और उसे लौटाती है। for-each उत्पादन [2, 4, 6, 8, 10] जावास्क्रिप्ट में For...In और For...of लूप्स क्या हैं? जब पुनरावृत्तीय ऑब्जेक्ट्स पर पुनरावृत्तीय करने की बात आती है तो और लूप बहुत उपयोगी होते हैं; पुनरावृत्तीय ऑब्जेक्ट्स किसी भी ऐसे तत्व को संदर्भित करते हैं जिस पर लूप किया जा सकता है, पुनरावृत्तीय ऑब्जेक्ट्स के सामान्य उदाहरण हैं सरणियाँ, स्ट्रिंग्स, सेट, आदि। for... in for... of और में समान हैं कि वे वस्तुओं के माध्यम से कैसे पुनरावृति/स्थानांतरित होते हैं, उनके बीच मुख्य अंतर यह है कि वे किस प्रकार मान लौटाते हैं। for... in for... of for... लूप्स में लूप तब उपयोगी होता है जब आपको किसी ऑब्जेक्ट से कुंजी(कुंजी)/गुण और पैरेंट ऑब्जेक्ट से उसके संगत गुण निकालने की आवश्यकता होती है। लूप कभी-कभी किसी ऑब्जेक्ट के माध्यम से उस तरीके से पुनरावृति कर सकता है जो उस विशेष ऑब्जेक्ट में परिभाषित किए गए तरीके से अलग होता है; आइए लूप इन एक्शन का एक उदाहरण लेते हैं। for... in for... in for... in let namesArray = []; const studentScores = { John: 60, Dan: 53, Tricia: 73, Jamal: 45, Jane: 52 } for(const name in studentScores){ namesArray.push(name); } console.log(namesArray); ऊपर दिए गए उदाहरण में, हमने नामक एक ऑब्जेक्ट को परिभाषित किया है जिसमें कई छात्रों के नाम और उनके संबंधित स्कोर शामिल हैं। उपयोग करके, हम केवल छात्रों के नाम प्राप्त करने में सक्षम थे, जो ऑब्जेक्ट की प्रतिनिधित्व करते हैं, और विधि का उपयोग करके उन्हें एक सरणी में संग्रहीत करते हैं। studentScores for... in studentScores कुंजियों का push() उत्पादन ["John", "Dan", "Tricia", "Jamal", "Jane"] लूप्स के लिए... लूप एक विशेष प्रकार का लूप है जो पुनरावृत्त ऑब्जेक्ट्स जैसे कि एरे, स्ट्रिंग्स, मैप्स आदि के मानों पर पुनरावृत्त होता है, लूप्स किसी ऑब्जेक्ट की कुंजियों या गुणों से संबंधित नहीं होते हैं, बल्कि वे केवल मानों पर प्राथमिकताएं दर्शाते हैं। for... of for... of लूप नियमित ऑब्जेक्ट पर पुनरावृति करने में असमर्थ है और चूंकि वे पुनरावृति योग्य नहीं हैं, इसलिए त्रुटि उत्पन्न होगी। आइए लूप का उपयोग करके एक उदाहरण लेते हैं। for... of for.. of let numArray = [1,2,3,4,5] for (const value of numArray) { console.log(value) } // Output = 1,2,3,4,5 संक्षेप में, और लूप पुनरावृत्त ऑब्जेक्ट्स के माध्यम से लूप करने का एक शानदार तरीका है; मुख्य अंतर यह है लूप ऑब्जेक्ट की कुंजी लौटाता है जबकि लूप केवल पुनरावृत्त ऑब्जेक्ट्स के मान लौटाता है। for... in for... of for... in for... of अनंत लूप क्या है और हम इससे कैसे बच सकते हैं? अनंत लूप से तात्पर्य ऐसे लूप से है जो अनिश्चित काल तक चलता रहता है; ऐसा तब होता है जब लूप में कोई निर्धारित निकास स्थिति नहीं होती है। अनंत लूप खतरनाक होते हैं क्योंकि वे आपके ब्राउज़र को क्रैश कर सकते हैं और आपके प्रोग्राम में अवांछित क्रियाएँ कर सकते हैं। // infinite loop sample while (true) { console.log("keep on running") } अपने प्रोग्राम में अनंत लूप को रोकने के लिए, हमेशा सुनिश्चित करें कि आपके लूप में एक निकास स्थिति परिभाषित है। निष्कर्ष इस लेख के अंत तक पहुँचने के लिए आपका बहुत-बहुत धन्यवाद, जावास्क्रिप्ट में लूप एक महत्वपूर्ण अवधारणा है जिसे हर डेवलपर को मास्टर करने की आवश्यकता है क्योंकि यह एक अच्छा और अनुकूलन योग्य प्रोग्राम बनाने के लिए बहुत मूल्यवान है। मेरा मानना है कि इस लेख से आप अपने प्रोग्राम में लूप का उपयोग करने की मूल बातें और पेचीदगियों को समझ पाएंगे।