जावास्क्रिप्ट में लूप के अनावश्यक पासों का ऑप्टिमाइजेशन

निम्नलिखित कोड में, एक प्रोग्रामर जाँच रहा है कि क्या सरणी में संख्या 3 है:

javascriptlet arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let exists = false;

for (let elem of arr) {
  if (elem === 3) {
    exists = true;
  }
}

console.log(exists);

इसके समाधान में क्या गलत है? ऐसा लगता है कि लूप में कोई अनावश्यक ऑपरेशन नहीं किए जा रहे हैं। हालाँकि, समस्या यह है कि यह निर्धारित होने के बाद कि संख्या 3 सरणी में है, लूप फिर भी सरणी के अंत तक चलता रहता है।

सबसे अतार्किक तब होगा यदि संख्या 3 सरणी की शुरुआत में कहीं मिल जाए, और स्वयं सरणी की लंबाई, मान लीजिए, 1000 तत्वों की हो। तो लूप के हज़ार बेकार, अनावश्यक पास होंगे! इष्टतम नहीं।

कोड को इष्टतम बनाते हैं, लूप को समय रहते रोक कर:

javascriptlet arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let exists = false;

for (let elem of arr) {
  if (elem === 3) {
    exists = true;
    break;
  }
}

console.log(exists);
Задание 1

निम्नलिखित कोड गणना करता है कि सरणी के कितने तत्वों को जोड़ने की आवश्यकता है, ताकि योग 10 से अधिक हो जाए। इष्टतम बनाएँ:

javascriptlet arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let sum = 0;
let i = 1;

for (let elem of arr) {
  sum += elem;
  
  if (sum <= 10) {
    i++;
  }
}

console.log(i);
Задание 2

निम्नलिखित कोड दिए गए अंतराल से सम संख्याएँ प्रिंट करता है। इष्टतम बनाएँ:

javascriptfor (let i = 0; i <= 100; i++) {
  if (i % 2 === 0) {
    console.log(i);
  }
}
Задание 3

निम्नलिखित कोड उन संख्याओं को प्रिंट करता है, जो एक साथ 2 और 3 से विभाज्य हैं। इष्टतम बनाएँ:

javascriptfor (let i = 0; i <= 100; i++) {
  if (i % 2 === 0 && i % 3 === 0) {
    console.log(i);
  }
}
Задание 4

निम्नलिखित कोड वर्तमान वर्ष की सभी शुक्रवार 13 वाली तारीखों को ढूँढता है। इष्टतम बनाएँ:

javascriptfor (let i = 0; i <= 11; i++) {
  let curr = new Date;
  let last = new Date(curr.getFullYear(), i + 1, 0).getDate();
  
  for (let j = 1; j <= last; j++) {
    let date = new Date(curr.getFullYear(), i, j);
    
    if (date.getDate() === 13 && date.getDay() === 5) {
      console.log(date);
    }
  }
}