हमारे पास जावास्क्रिप्ट में संख्याओं की एक सरणी है जिसमें एक क्रमबद्ध क्रम में संख्याएँ होती हैं। हमारा काम एक ऐसा फ़ंक्शन लिखना है जो संख्याओं की इस सरणी को लेता है और दो तत्वों की एक सरणी देता है, सरणी के शीर्ष दो तत्व (सरणी के सबसे बड़े दो तत्व)।
हमें इसे एक पास में करना है यानी, हमें इस विधि को रैखिक समय में निष्पादित करने की आवश्यकता है जैसे लूप के लिए केवल एक का उपयोग करके या यदि हम ES6 फ़ंक्शन का उपयोग करते हैं, तो हमें केवल एक और एक बार उपयोग करना सुनिश्चित करना होगा और उन तरीकों के नेस्टिंग से बचना होगा जो समय बढ़ाते हैं जटिलता।
तो, अब Array.prototype.reduce() विधि का उपयोग करके कोड लिखते हैं -
उदाहरण
const arr = [23, 65, 67, 23, 2, 6, 87, 23, 45, 65, 3, 234, 3]; const topTwo = arr => { if(arr.length < 2){ return false; }; return arr.reduce((acc, val) => { if(val > acc[0]){ let t = acc[0]; acc[0] = val; acc[1] = t; }else if(val > acc[1]){ acc[1] = val; }; return acc; }, [-Infinity, -Infinity]); }; console.log(topTwo(arr));
आउटपुट
कंसोल में आउटपुट होगा -
[ 234, 87 ]