2017-08-12 51 views
0

這是一個非常簡單的代碼部分,根本不起作用。儘管變量較小,爲什麼它會進入第一個if語句?

我想比較2個數組 - 如果a_arr[i]>比b_arr[i]增加點數a否則加點數b

和我不斷得到的代碼運行到第一個if語句,雖然b_arr[i]有更大的價值。

function solve(a_arr, b_arr){ 

    var a = 0; 
    var b = 0; 

    for (var i = 0, len = 3; i < len; i++) { 

     if (a_arr[i] == b_arr[i]) { 

     } else { 

      if (a_arr[i] > b_arr[i]){ 
       a++; 
      } else { 
       b++; 
      } 

     } 

    } 

    var result = [a, b]; 
    return result; 
} 
+2

請提供2個陣列您有 –

+0

問題'[6,7,8]'和'[4,7,11]'應導致'的例子[1,1] ',並且當前產生'[2,0]' –

+1

@RickSanchez否,其返回的[1.1]'本身... – kukkuz

回答

1

下面是您的確切代碼作爲片段的示例。如您所見,a增加了1倍,而b增加了1倍。你的代碼工作正常。我認爲你有一個問題檢查你的結果。

function solve(a_arr, b_arr){ 
 

 
    var a = 0; 
 
    var b = 0; 
 

 
    for (var i = 0, len = 3; i < len; i++) { 
 

 
     if (a_arr[i] == b_arr[i]) { 
 

 
     } else { 
 

 
      if (a_arr[i] > b_arr[i]){ 
 
       a++; 
 
      } else { 
 
       b++; 
 
      } 
 

 
     } 
 

 
    } 
 

 
    var result = [a, b]; 
 
    return result; 
 
} 
 

 
arr1 = [6,7,8]; 
 
arr2 = [4,7,11]; 
 

 
arr3 = solve(arr1, arr2); 
 
console.log(arr3);

+0

您應該投票關閉爲「無法重現」。 – Bergi

+0

@Bergi我做到了。 :) –

0

您的代碼工作。但它不是防彈的。一個靜態的len可能會導致一些問題與不同大小的陣列。可以這樣做:

function solve(a_arr, b_arr){ 
    var a = 0,b = 0; 
    for (var i = 0, len = Math.min(a_arr.length,b_arr.length); i < len; i++) { 
    if (a_arr[i] == b_arr[i]) continue; 
    if (a_arr[i] > b_arr[i]){ 
     a++; 
    } else { 
     b++; 
    } 
    } 
    return [a,b]; 
} 
相關問題