एक डेवलपर के रूप में, आपने संभवतः नियमित जावास्क्रिप्ट फ़ंक्शन का उपयोग किया होगा। पहले ऑर्डर फ़ंक्शन कहा जाता है, वे किसी फ़ंक्शन को पैरामीटर के रूप में नहीं लेते हैं या फ़ंक्शन वापस नहीं करते हैं।
फ़ंक्शन हैलो (नाम) {वापसी "हैलो," + "" + नाम} कंसोल.लॉग (हैलो ("कैरियर कर्म")); // हैलो, करियर कर्म
यह लेख उच्च क्रम के कार्यों (HOF) के बारे में बात करता है। ये ऐसे फ़ंक्शन हैं जो डेवलपर्स को किसी फ़ंक्शन में तर्क के रूप में पास करके या फ़ंक्शन को वापस करके कोड को और अधिक पठनीय बनाने में मदद करते हैं। हम आपको HOF और कार्यात्मक प्रोग्रामिंग से परिचित कराने के लिए कुछ बुनियादी उदाहरणों पर जाएंगे और दो लोकप्रिय उन्नत सरणी विधियों के बारे में बात करेंगे जो काम करने के लिए उच्च क्रम फ़ंक्शन निर्माण का उपयोग करती हैं।
बेसिक हायर ऑर्डर फंक्शन उदाहरण
जावास्क्रिप्ट में हायर ऑर्डर फंक्शंस का उपयोग करने के कई अलग-अलग तरीके हैं।
कैलकुलेटर
आइए एक बुनियादी HOF से शुरू करें जो एक कॉलबैक फ़ंक्शन को एक तर्क के रूप में लेता है और कुछ तर्कों के साथ उस कॉलबैक को लौटाता है:
//उच्च ऑर्डर फ़ंक्शनफ़ंक्शन हायरऑर्डरफ़ंक्शन(num1, num2, cb) {रिटर्न cb(num1, num2); // यह हमारे cb फ़ंक्शन को आमंत्रित करता है और हमारे तर्कों को कॉलबैक में भेजता है। } // कॉलबैकफ़ंक्शन ऐड (num1, num2) {रिटर्न num1 + num2;} फंक्शन गुणा (num1, num2) {रिटर्न num1 * num2;} फंक्शन डिवाइड (num1, num2) {रिटर्न num1 / num2;} फंक्शन घटाना (num1, num2) {रिटर्न num1 - num2;}फंक्शन मोडुलो (num1, num2) {रिटर्न num1% num2;} कंसोल.लॉग (हाईऑर्डरफंक्शन (43, 13, ऐड));
यहां हमारे पास दो प्रकार के फ़ंक्शन हैं:एक उच्च ऑर्डर फ़ंक्शन जो कॉलबैक देता है और एक सेट फर्स्ट ऑर्डर फ़ंक्शन जो दो नंबरों पर एक ऑपरेशन करता है। स्निपेट के अंत में, हम higherOrderFunction()
. पर एक फंक्शन कॉल करते हैं . यह फ़ंक्शन दिए गए मापदंडों के साथ पारित किए गए cb के आह्वान का परिणाम देता है। यदि आपने सभी संभावित अंकगणितीय ऑपरेटरों के लिए कॉलबैक फ़ंक्शन लिखा है, तो आप किसी भी ऑपरेशन को कॉल करने के लिए हायरऑर्डर फ़ंक्शन का उपयोग कर सकते हैं।
ईवेंट श्रोता
उच्च क्रम फ़ंक्शन का एक अन्य उदाहरण तब होता है जब आप किसी ईवेंट श्रोता को DOM (दस्तावेज़ ऑब्जेक्ट मॉडल) पर किसी तत्व में जोड़ते हैं। यह उदाहरण लें:
शीर्षक> <मेटा नाम ="विवरण" सामग्री =""> <मेटा नाम ="व्यूपोर्ट" सामग्री ="चौड़ाई =डिवाइस-चौड़ाई, प्रारंभिक-पैमाना =1"> <लिंक rel ="स्टाइलशीट" href ="">
इस उदाहरण में, मैंने HTML में एक बटन बनाया, जावास्क्रिप्ट का उपयोग करके इसे चुना, और इसमें एक ईवेंट श्रोता जोड़ा। ईवेंट श्रोता की संरचना एक साधारण उच्च क्रम फ़ंक्शन की है - यह एक अनाम फ़ंक्शन को अपने दूसरे तर्क के रूप में लेता है।
हाइलाइट किया गया अनुभाग आपका उच्च क्रम का कार्य है।
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
उन्नत सरणी विधियां
जावास्क्रिप्ट बिल्ट-इन ऐरे मेथड्स वे विशेष उच्च क्रम के कार्य हैं जो ES6 के लिए नए हैं जिनका उपयोग हम एक सरणी पर पुनरावृति करने के लिए कर सकते हैं और या तो इसमें हेरफेर कर सकते हैं या एक पूरी तरह से नई सरणी लौटा सकते हैं जिनके मूल्यों में हेरफेर किया गया है।
जैसे ही हम जावास्क्रिप्ट में अधिक जटिल समस्या को हल करना शुरू करते हैं, जब हम सरणियों पर पुनरावृति करते हैं, तो हम जो तर्क लिखते हैं उनमें से कुछ को अमूर्त करने के बारे में सोचना शुरू करें। इन उच्च क्रम फ़ंक्शन सरणी विधियों का उपयोग करने से आपको एक बेहतर JS डेवलपर बनने में मदद मिलती है।
मान लीजिए कि उदाहरण के लिए हमारे पास प्रोफेसरों की एक सरणी है:
प्रत्येक के लिए
यदि हम ES6 का उपयोग करने से पहले सरणी पर पुनरावृति करना चाहते हैं और प्रत्येक आइटम में हेरफेर करना चाहते हैं, तो हमें यही करना है:
फ़ंक्शन forEachES5(arr){ for(let i =0; iES6 सिंटैक्स हमें forEach विधि का उपयोग करके कोड को कम करने की अनुमति देता है:
फ़ंक्शन forEachES6(arr) { arr.forEach((professor, index, origArr) => { origArr[index] ="Professor" + प्रोफेसर; }); वापसी गिरफ्तारी; }पूर्व>यह forEach विधि कॉलबैक फ़ंक्शन को इसके पहले पैरामीटर के रूप में लेती है ताकि इसे उच्च ऑर्डर फ़ंक्शन बनाया जा सके। यह कॉलबैक फ़ंक्शन मूल रूप से सरणी में मौजूद प्रत्येक आइटम पर किया गया "एक्शन" है। इसके अलावा, forEach विधि अपने वैकल्पिक दूसरे और तीसरे पैरामीटर के रूप में एक अनुक्रमणिका और एक सरणी भी लेती है।
प्रत्येक विधि (साथ ही अन्य अंतर्निर्मित सरणी विधियों) में इन पैरामीटरों पर ऑर्डर मायने रखता है। पहला हमेशा कॉलबैक फ़ंक्शन होता है, दूसरा हमेशा सरणी में आइटम की अनुक्रमणिका होता है, और तीसरा हमेशा सरणी की एक प्रति होता है।
forEach विधि जावास्क्रिप्ट में लूप के लिए प्रस्तुत करने का एक और तरीका है। यह कुछ भी वापस नहीं करता है। विधि पहले से मौजूद चीज़ों में हेरफेर करती है और इसे उस सरणी में सहेजती है जिसके साथ आप काम कर रहे हैं यदि आप निर्दिष्ट करते हैं कि आप इसके साथ क्या करना चाहते हैं।
मानचित्र
प्रत्येक विधि के लिए निकटतम विधि मानचित्र विधि है। यह बहुत हद तक उसी तरह काम करता है, सिवाय इसके कि यह विधि एक नई सरणी लौटाती है। कॉलबैक फ़ंक्शन में आप जो कुछ भी हेरफेर करते हैं, वह मूल सरणी को प्रभावित नहीं करेगा।
आइए एक नज़र डालते हैं कि कौन सा नक्शा पूर्व-ES6 जैसा दिखता था:
<पूर्व>फ़ंक्शन mapES5(arr){ चलो newArr =[]; for(let i =0; iजैसा कि आप देख सकते हैं, हमें जो करना था वह हमारे लूप के बाहर एक नई सरणी को तुरंत चालू करना था ताकि हम इसमें नए मूल्यों को आगे बढ़ा सकें। फिर हमें वास्तव में इसे कहीं और उपयोग करने में सक्षम होने के लिए अपनी नई सरणी वापस करनी होगी!
ES6 और मानचित्र विधि के साथ, हम उस तर्क को और अधिक पठनीय बनाने के लिए उसमें से कुछ को दूर कर सकते हैं:
फ़ंक्शन मैपविथईएस 6 (एआर) {कॉन्स्ट मैप किया गया =एआर.मैप (प्रोफेसर => {रिटर्न "प्रोफेसर" + प्रोफेसर; }) रिटर्न मैप किया गया;}मानचित्र विधि के साथ-साथ अन्य सरणी विधियों के बारे में विशेष विशेषता, विशेष रूप से फ़ंक्शन को कम करना और फ़िल्टर करना, क्या आप इसे एक चर के लिए असाइन कर सकते हैं और इसे वापस कर सकते हैं या बस पूरे फ़ंक्शन को पूरी तरह से वापस कर सकते हैं! एक नए सरणी के लिए कोई धक्का देने की आवश्यकता नहीं है - यह आपके लिए इस मानचित्र विधि के साथ किया गया है। याद रखें कि आपके मैप मेथड कॉलबैक फंक्शन के अंदर लॉजिक में रिटर्न वैल्यू है!
निष्कर्ष:
आपको बेहतर डेवलपर बनने में मदद करने के लिए हायर ऑर्डर फंक्शन जावास्क्रिप्ट में एक अत्यंत महत्वपूर्ण अवधारणा है। यह आपके कोड को और अधिक पठनीय बनाने के लिए कुछ तर्कों को दूर करने में मदद करेगा, और, कुछ मामलों में, अधिक प्रदर्शनकारी।
इस ट्यूटोरियल में, हमने बुनियादी कैलकुलेटर विधियों से लेकर ईवेंट श्रोताओं और उन्नत सरणी फ़ंक्शंस तक, हायर ऑर्डर फ़ंक्शंस लिखने के कुछ अलग-अलग तरीकों की खोज की। एक बार जब आप इसमें महारत हासिल कर लेते हैं, तो आप समस्याओं के कुछ और जटिल समाधानों से निपटने के लिए तैयार होते हैं!