आज हम कम जावास्क्रिप्ट सरणी विधि के बारे में बात करेंगे, और हम इसका उपयोग किसी सरणी को केवल एक मान में कम करने के लिए कैसे कर सकते हैं। लिखे गए सभी कोड स्निपेट जावास्क्रिप्ट भाषा में हैं। इस लेख को समझने और विधि को प्रभावी ढंग से लागू करने के लिए भाषा का बुनियादी ज्ञान आवश्यक है।
कम जावास्क्रिप्ट सरणी विधि कार्यात्मक प्रोग्रामिंग का एक अनिवार्य घटक है जो एक सरणी लेता है और इसे केवल एक मान में कम कर देता है। यह बदले में सरणी के प्रत्येक तत्व पर कॉलबैक फ़ंक्शन चलाकर पूरा किया जाता है, इससे पहले तत्व पर गणना के परिणाम को पारित किया जाता है।
const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const initialValue = 0; const sumWithInitial = array1.reduce((accumulator, currentValue) => accumulator + currentValue, initialValue) console.log(sumWithInitial); // expected output: 10
उपरोक्त कोड स्निपेट संख्याओं की एक सरणी है; जब हम इस पर कम करने की विधि कहते हैं, तो यह संपूर्ण सरणी लेता है और केवल एक मान देता है जो 10 है।
अगर हमें सही तरीके से विधि का उपयोग करना है, तो "कम" जावास्क्रिप्ट पैरामीटर क्या हैं, इसकी बहुत ठोस समझ होना महत्वपूर्ण है। नीचे मैंने इन पैरामीटर्स पर प्रकाश डाला है; हम उन्हें एक के बाद एक लेंगे, फिर अंत में इसका अर्थ निकालने के लिए सब कुछ एक साथ रखेंगे।
कॉलबैक समारोह
यह फ़ंक्शन सरणी में प्रत्येक आइटम पर चलता है। बाद के कॉलबैक Fn निष्पादन पर, इसका वापसी मान संचायक तर्क के मान में बदल जाता है। अंतिम मंगलाचरण के लिए वापसी मान कम () में बदल जाता है।
फ़ंक्शन को कॉल करते समय निम्नलिखित पैरामीटर प्रदान किए जाते हैं:
बिजली संचयक यंत्र
यह मूल्य में कॉलबैक Fn के लिए अंतिम कॉल का परिणाम है। अगर आपूर्ति की जाती है, तो पहली कॉल पर प्रारंभिक वैल्यू का उपयोग किया जाता है; यदि नहीं, सरणी [0] प्रयोग किया जाता है।
वर्तमान मूल्य
यह वर्तमान तत्व का मूल्य है। यदि प्रारंभिक वैल्यू प्रदान की गई थी, तो इंडेक्स 0 (सरणी [0]) पर सरणी का मान पहली कॉल पर वापस आ जाएगा; यदि नहीं, तो अनुक्रमणिका 1 (सरणी [1]) लौटा दी जाएगी।
वर्तमान सूचकांक
यह सरणी की वर्तमान वैल्यू की अनुक्रमणिका स्थिति है। यदि प्रारंभिक वैल्यू पहली कॉल पर दी गई थी, तो इसकी स्थिति इंडेक्स 0 पर होगी; अन्यथा, यह इंडेक्स 1 पर होगा।
सरणी
यह केवल वह सरणी है जिसमें कम () विधि का उपयोग किया गया था।
आरंभिक मूल्य
एक मान जिसका उपयोग पहले कॉलबैक पर संचायक को प्रारंभ करने के लिए किया जाता है। यदि प्रारंभिक वैल्यू प्रदान की जाती है, तो कॉलबैक एफएन सरणी के पहले तत्व पर वर्तमान वैल्यू सेट के साथ चलना शुरू कर देता है। यदि इनिशियलवैल्यू को छोड़ दिया जाता है, तो संचायक को सरणी के पहले मान पर सेट कर दिया जाता है, और कॉलबैकFn वर्तमान वैल्यू सेट के साथ सरणी के दूसरे मान पर चलना शुरू कर देता है। यदि इस परिदृश्य में सरणी खाली है (अर्थात, संचायक के रूप में लौटने के लिए कोई प्रारंभिक आइटम नहीं है), तो एक त्रुटि उत्पन्न होती है।
सब कुछ एक साथ रखना
कम करें (फ़ंक्शन (संचायक, करंटवैल्यू, करंटइंडेक्स, एरे) { /* … */ }, इनिशियलवैल्यू)
इन सभी मापदंडों का संयोजन उपरोक्त कोड स्निपेट जैसा दिखना चाहिए।
आइए इस घटी हुई जावास्क्रिप्ट विधि में गहराई से गोता लगाएँ और देखें कि पर्दे के पीछे क्या हो रहा है।
const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const initialValue = 0; const sumWithInitial = array1.reduce( (accumulator, currentValue) => accumulator + currentValue, initialValue );
सभी कम जावास्क्रिप्ट विधि आइटम के माध्यम से लूप करती है, और हर बार जब यह लूप हो जाती है तो हम एक अलग आइटम लौटाते हैं और हमें पिछला मान मिलता है जिसे हम कम () से वापस करते हैं। यदि यह कम () में पहला आइटम है, तो हमें केवल शून्य रिटर्न मिलता है क्योंकि यह हमारा डिफ़ॉल्ट मान है। यदि हम डिफ़ॉल्ट को 50 में बदलते हैं, उदाहरण के लिए, यह सरणी को प्रभावित करेगा।
हम शून्य या डिफ़ॉल्ट संख्या लेते हैं और इसे अपने पहले आइटम में जोड़ते हैं; हमें पिछले कोड में कुल 1 मिलेगा। हम इसे अगले आइटम के लिए फिर से करते हैं, जो कि 2 है। हम 1 + 2 जोड़ते हैं और 3 प्राप्त करते हैं; हम इस प्रक्रिया को तब तक जारी रखते हैं जब तक हम अंतिम वस्तु तक नहीं पहुंच जाते।
| बिजली संचयक यंत्र | वर्तमान मूल्य | अनुक्रमणिका | लौटाया गया मान |
---|---|---|---|---|
पहली कॉल | 0 | 1 | 0 | 1 |
दूसरी कॉल | 1 | 2 | 1 | 3 |
तीसरी कॉल | 3 | 3 | 2 | 6 |
चौथी कॉल | 6 | 4 | 3 | 10 |
ऊपर दी गई तालिका हर बार जब हम इस पद्धति का उपयोग करते हैं तो क्या होता है इसकी एक स्पष्ट तस्वीर देती है। ध्यान दें कि यह परिणाम प्रारंभिक मूल्य के आधार पर अलग-अलग होगा।
अंतिम नोट पर, जावास्क्रिप्ट को कम करना एक पुनरावृत्त विधि है। यह आरोही-सूचकांक क्रम में प्रत्येक तत्व को "रेड्यूसर" कॉलबैक फ़ंक्शन लागू करके सभी सरणी के आइटम को एक ही मान में एकत्र करता है। जब callbackFn को फिर से कॉल किया जाता है, तो callbackFn वापसी मान हमेशा संचायक के रूप में प्रदान किया जाता है। कम करें संचायक के अंतिम मान से अपना वापसी मान लौटाता है, जो कि सरणी के अंतिम पुनरावृत्ति () पर कॉलबैक Fn से लौटाया गया मान है।
जबकि कॉलबैक-एफएन के रूप में प्रदान किया गया फ़ंक्शन संशोधित कर सकता है, जिस सरणी पर इसे कहा जाता है, कम करें () नहीं करता है। हालाँकि, ध्यान दें कि प्रारंभिक कॉलबैक Fn निष्पादन से पहले सरणी की लंबाई संरक्षित है।