2017-01-18 54 views
0

我的函數採用整數數組除數,low數字和high數字作爲參數。它打印的範圍在lowhigh之間。如何使我的if-else語句工作

  • 如果該範圍內的數字可被數組的所有元素整除,則打印「全部匹配」。
  • 如果至少有一個數字匹配,則打印「一個匹配」。
  • 如果沒有數字匹配,請打印數字。

但是,我想不出如何正確編寫我的if-else語句。它只打印匹配的數字。當我更改else-if語句時,它將打印所有數字兩次。

function allFactors(factors, num){ 
      var nums = []; 
      for(var i = 0; i < factors.length; i++) { 
      var factor = factors[i]; 
      if(num % factor === 0){ 
       nums.push(factor); 
      } 
      } 
      if(nums.length === factors.length){ 
      return true; 
      } 
      return false; 
     } 

     //console.log(allFactors([2,3],6)) 

     function isFactor(num, factor) { 
      if(num % factor === 0) { 
      return true; 
      } 
      return false; 
     } 

     function matches(factors, low, high) { 
      var skipper = false 
      for(var i = low; i <= high; i++) { 
       if(allFactors(factors,i)){ 
       console.log(i + " match_all") 
       } else { 
       for(var j = 0; j < factors.length;j++) { 
       var factor = factors[j]; 

       if(isFactor(i,factor)) { 
        console.log(i + " match_one"); 
        skipper = true 
       } else { 
        if(isFactor(i,factor)) {continue} 
        console.log(i) 
       } 
       } 

       } 
      } 
     } 


     matches([2,3],1,6) 
+0

這行'skipper = true'是做什麼用的? – rupinderjeet

+0

我在想,如果我可以讓第二條if語句成真,那麼我可以讓它不打印,但它仍然會打印 –

回答

0

嘗試從循環中斷開,一旦你知道一個因素匹配。

function matches(factors, low, high) {  
    var skipper = false; 

    for(var i = low; i <= high; i++) { 

     if(allFactors(factors,i)){ 
      console.log(i + " match_all") 
     } else { 

      for(var j = 0; j < factors.length;j++) { 
       var factor = factors[j]; 

       if(isFactor(i,factor)) { 

        console.log(i + " match_one"); 
        skipper = true; 

        // break here because we know that at least one factor matches 
        // and print "match_one" 
        break; 
       } else { 

        // number not matched 
        console.log(i); 
       } 
      } 
     } 

     // use skipper variable you assigned above to break out of outer loop 
     if(skipper){ 
      break; 
     } 
    } 
} 
+0

仍然沒有bueno只計數到2然後返回d =對於任何一組數字this問題確實在困擾着我 –

+0

檢查我的編輯,'如果'周圍'繼續'的陳述是無用的。你正在檢查'if(5> 7){} else {if(5> 7){continue; }}。 – rupinderjeet