जानें कि जावास्क्रिप्ट फ़ंक्शन कितने लचीले हो सकते हैं और आप लचीले, पुन: प्रयोज्य कोड बनाने के लिए उनका उपयोग कैसे कर सकते हैं।
जावास्क्रिप्ट अधिकांश आधुनिक ब्राउज़रों द्वारा समर्थित एक शक्तिशाली भाषा है, और यह शुरुआती लोगों के लिए एक बढ़िया विकल्प है।
कई अन्य आधुनिक प्रोग्रामिंग भाषाओं की तरह, जावास्क्रिप्ट फ़ंक्शंस का समर्थन करता है जो आपको कोड के एक ब्लॉक को अलग करने और इसे कहीं और पुन: उपयोग करने देता है। आप वेरिएबल्स के लिए असाइन फ़ंक्शंस का भी उपयोग कर सकते हैं और उन्हें अन्य मानों की तरह पैरामीटर के रूप में पास कर सकते हैं।
उच्च क्रम के कार्य क्या हैं?
उच्च-क्रम फ़ंक्शन के लिए सबसे सरल परिभाषा एक ऐसा फ़ंक्शन है जो अन्य कार्यों को पैरामीटर के रूप में स्वीकार करके या उन्हें वापस करके उन पर संचालन करता है। उच्च-क्रम के फ़ंक्शंस का भारी उपयोग किया जाता है कार्यात्मक प्रोग्रामिंग प्रतिमान. यदि आप हैं अभी जावास्क्रिप्ट के साथ शुरुआत कर रहा हूँ, उच्च-क्रम के कार्यों को समझना थोड़ा मुश्किल हो सकता है।
निम्नलिखित उदाहरण पर विचार करें:
समारोहपरिवर्तन(एफ.एन) {
होने देना परिणामअरे = [];वापस करनासमारोह (सरणी) {
के लिए (होने देना मैं = 0; मैं परिणामअरे.पुश (एफएन (सरणी[i]))
}
वापस करना परिणाम सारणी
}
}
उपरोक्त कोड ब्लॉक में, परिवर्तन फ़ंक्शन एक उच्च-क्रम वाला फ़ंक्शन है जो इसमें लेता है एफ.एन एक पैरामीटर के रूप में कार्य करता है और एक अज्ञात फ़ंक्शन लौटाता है जो अंदर लेता है सरणी एक पैरामीटर के रूप में.
का उद्देश्य परिवर्तन फ़ंक्शन का उद्देश्य सरणी में तत्वों को संशोधित करना है। सबसे पहले, कोड एक वेरिएबल को परिभाषित करता है परिणाम सारणी और इसे एक खाली सरणी से बांध देता है।
परिवर्तन फ़ंक्शन एक अज्ञात फ़ंक्शन लौटाता है जो प्रत्येक तत्व के माध्यम से लूप करता है सरणी, फिर तत्व को पास करता है एफ.एन गणना के लिए कार्य करता है, और परिणाम को आगे बढ़ाता है परिणाम सारणी. लूप के पूरा होने के बाद, अनाम फ़ंक्शन वापस आ जाता है परिणाम सारणी.
कॉन्स्ट function1 = परिवर्तन((एक्स) => एक्स * 2)
सांत्वना देना.लॉग (फ़ंक्शन1([ 2, 3, 4, 5, 6 ])) /* [ 4, 6, 8, 10, 12] */
उपरोक्त कोड ब्लॉक द्वारा लौटाए गए अज्ञात फ़ंक्शन को निर्दिष्ट करता है परिवर्तन स्थिर चर के लिए कार्य करें फ़ंक्शन1. एफ.एन का उत्पाद लौटाता है एक्स जो एक विकल्प है सरणी[i].
कोड एक पैरामीटर के रूप में एक सरणी भी पास करता है फ़ंक्शन1 और फिर परिणाम को कंसोल पर लॉग करता है। इसे लिखने का एक छोटा तरीका यह होगा:
सांत्वना देना.लॉग (परिवर्तन((एक्स) => एक्स * 2)([ 2, 3, 4, 5, 6 ]))
जावास्क्रिप्ट में एक अंतर्निहित उच्च-क्रम फ़ंक्शन है जो मूल रूप से वही काम करता है परिवर्तन, जिसे हम बाद में कवर करेंगे।
उम्मीद है, आप यह समझना शुरू कर देंगे कि जावास्क्रिप्ट में उच्च-क्रम के कार्य कैसे काम करते हैं। निम्नलिखित फ़ंक्शन पर एक नज़र डालें और देखें कि क्या आप अनुमान लगा सकते हैं कि यह क्या करता है।
समारोहफ़िल्टरएंडट्रांसफॉर्म(fn, arrayToBeFiltered, शर्त) {
होने देना फ़िल्टर्डअरे = [];के लिए (होने देना मैं = 0; i < arrayToBeFiltered.length; मैं++) {
अगर (स्थिति (arrayToBeFiltered[i])) {
होने देना y = ट्रांसफ़ॉर्म (fn)([ arrayToBeFiltered[i] ])[0]
फ़िल्टर्डअरे.पुश (वाई)
} अन्य {
फ़िल्टर किया गया Array.push (arrayToBeFiltered[i])
}
}
वापस करना फ़िल्टर किया गया ऐरे
}
यह कोड ब्लॉक एक फ़ंक्शन को परिभाषित करता है जो वह करता है जिस पर आपको संदेह हो सकता है - यह सरणी में उन तत्वों की जांच करता है जो एक निश्चित शर्त को पूरा करते हैं और उन्हें बदल देते हैं परिवर्तन() समारोह। इस फ़ंक्शन का उपयोग करने के लिए, आप कुछ ऐसा करें:
फ़िल्टरएंडट्रांसफॉर्म((एक्स) => एक्स * 2, [ 1, 2, 3, 4, 5 ], (x) => x % 20)
से भिन्न परिवर्तन फ़ंक्शन, द फ़िल्टरएंडट्रांसफॉर्म फ़ंक्शन पैरामीटर के रूप में दो फ़ंक्शन लेता है: एफ.एन और स्थिति. स्थिति फ़ंक्शन जाँचता है कि क्या पैरामीटर पारित हुआ है, एक सम संख्या है, और सत्य लौटाता है। अन्यथा, यह गलत रिटर्न देता है।
अगर स्थिति सत्य का समाधान करता है (शर्त पूरी होती है), केवल तभी परिवर्तन फ़ंक्शन बुलाया गया. यदि आप किसी सरणी के साथ काम कर रहे हैं और कुछ तत्वों को बदलना चाहते हैं तो यह तर्क काम आ सकता है। यदि आप इस कोड को ब्राउज़र कंसोल में चलाते हैं, तो आपको निम्नलिखित प्रतिक्रिया मिलनी चाहिए:
[ 1, 4, 3, 8, 5 ]
आप देख सकते हैं कि फ़ंक्शन केवल उन तत्वों को परिवर्तित करता है जो एक निश्चित शर्त को पूरा करते हैं, उन तत्वों को छोड़ देते हैं जो शर्त को पूरा नहीं करते हैं।
जावास्क्रिप्ट में Array.map() उच्च-क्रम फ़ंक्शन
मानचित्र () जैसी सारणी विधियाँ उच्च-क्रम वाले फ़ंक्शन हैं जो सरणियों में हेरफेर करना आसान बनाते हैं। यह ऐसे काम करता है।
होने देना सरणी = [ 1, 2, 3, 4, 5 ];
होने देना रूपांतरितअरे = array.map((एक्स) => एक्स * 2);
जब आप लॉग इन करें रूपांतरित ऐरे ब्राउज़र कंसोल में, आपको वही परिणाम मिलना चाहिए, जो आपको मिला था परिवर्तन पहले उल्लिखित फ़ंक्शन:
[ 2, 4, 6, 8, 10 ]
सारणी.मानचित्र() दो पैरामीटर लेता है, पहला पैरामीटर स्वयं तत्व को संदर्भित करता है, जबकि दूसरा पैरामीटर तत्व के सूचकांक (सरणी में स्थिति) को संदर्भित करता है। विद जस्ट सारणी.मानचित्र() आप के समान परिणाम प्राप्त कर सकते हैं फ़िल्टरएंडट्रांसफॉर्म समारोह। यहां बताया गया है कि आप इसे कैसे करते हैं:
होने देना सरणी = [ 1, 2, 3, 4, 5 ];
होने देना रूपांतरितअरे = array.map((एक्स) => एक्स % 20? एक्स * 2: एक्स);
उपरोक्त कोड ब्लॉक में, फ़ंक्शन वर्तमान तत्व का उत्पाद लौटाता है और 2, यदि तत्व सम है। अन्यथा, यह तत्व को अछूता लौटा देता है।
बिल्ट-इन के साथ नक्शा फ़ंक्शन, आप कोड की कई पंक्तियों की आवश्यकता को समाप्त करने में कामयाब रहे हैं, जिसके परिणामस्वरूप बहुत अधिक स्वच्छ कोड और बग होने की संभावना कम हो गई है।
जावास्क्रिप्ट में Array.filter() फ़ंक्शन
जब आप आह्वान करते हैं फ़िल्टर किसी सरणी पर विधि, सुनिश्चित करें कि विधि में आपके द्वारा पास किए गए फ़ंक्शन का रिटर्न मान या तो सही है या गलत है। फ़िल्टर विधि एक सरणी लौटाती है जिसमें ऐसे तत्व होते हैं जो पारित शर्त को पूरा करते हैं। यहां बताया गया है कि आप इसका उपयोग कैसे करते हैं।
समारोहचेकफर्स्टलेटर(शब्द) {
होने देना स्वर = "ऐइउउ"अगर (स्वर वर्ण.शामिल है(शब्द[0].लोअरकेस के लिए())) {
वापस करना शब्द;
} अन्य {
वापस करना;
}
}
होने देना शब्द = [ "नमस्ते", "से", "द", "बच्चे", "का", "ग्रह", "धरती" ];
होने देना परिणाम = शब्द.फ़िल्टर((एक्स) => चेकफर्स्टलेटर (x))
उपरोक्त कोड ब्लॉक का पता लगाता है शब्द सरणी और किसी भी शब्द को फ़िल्टर करता है जिसका पहला अक्षर स्वर है। जब आप कोड चलाते हैं और लॉग इन करते हैं परिणाम परिवर्तनशील, आपको निम्नलिखित परिणाम मिलने चाहिए:
[ 'का', 'धरती' ];
जावास्क्रिप्ट में Array.reduce() फ़ंक्शन
कम करना() उच्च-क्रम फ़ंक्शन दो पैरामीटर लेता है। पहला पैरामीटर रिडक्शन फ़ंक्शन है। यह कमी फ़ंक्शन दो मानों को संयोजित करने और उस मान को वापस करने के लिए ज़िम्मेदार है। दूसरा पैरामीटर वैकल्पिक है.
यह फ़ंक्शन को पास करने के लिए प्रारंभिक मान को परिभाषित करता है। यदि आप किसी सरणी में सभी तत्वों का योग वापस करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:
होने देना ए = [ 1, 2, 3, 4, 5];
होने देना योग = 0;के लिए (होने देना मैं = 0; मैं < ए.लंबाई; मैं++) {
योग = योग + ए[i];
}
सांत्वना देना.लॉग (योग);
यदि आप कोड चलाते हैं, जोड़ 15 होना चाहिए. आप इसके साथ एक अलग दृष्टिकोण भी अपना सकते हैं कम करना समारोह।
होने देना ए = [ 1, 2, 3, 4, 5 ];
योग = ए.घटाना((सी, एन) => सी + एन);
सांत्वना देना.लॉग (योग);
उपरोक्त कोड ब्लॉक पहले के उदाहरण की तुलना में अधिक साफ-सुथरा है। इस उदाहरण में, कमी फ़ंक्शन दो मापदंडों में होता है: सी और एन. सी जबकि वर्तमान तत्व को संदर्भित करता है एन सरणी में अगले तत्व को संदर्भित करता है।
जब कोड चलता है, तो रेड्यूसर फ़ंक्शन सरणी के माध्यम से जाता है, जिससे पिछले चरण से परिणाम में वर्तमान मान जोड़ना सुनिश्चित होता है।
उच्च कोटि के कार्यों की शक्ति
जावास्क्रिप्ट में फ़ंक्शन शक्तिशाली हैं, लेकिन उच्च-क्रम वाले फ़ंक्शन चीजों को अगले स्तर पर ले जाते हैं। वे कार्यात्मक प्रोग्रामिंग में व्यापक रूप से उपयोग किए जाते हैं, जिससे आप आसानी से फ़िल्टर, कम और मैप कर सकते हैं।
एप्लिकेशन बनाते समय उच्च-क्रम फ़ंक्शन आपको अधिक मॉड्यूलर और पुन: प्रयोज्य कोड लिखने में मदद कर सकते हैं।