2013-09-11 89 views
0

我正在編寫一個程序,用於確定數字是否在數組中的兩個值之間。將數組中的值與javascript中的數值比較

這是我使用的數組的一個例子。

var attackArray = new Array (2); 
attackArray[0] = new Array("0","1","2","2","2","3","4"); 
attackArray[1] = new Array("2","3","2","3","2","3","4"); 

我正在使用下面的代碼來比較數字中的前兩個值。然後我遍歷數組,直到找到滿足要求的行。該號碼必須> =第一個號碼,< =第二個號碼。

這是我正在使用的代碼。

function leveltest (number) 
{ 
    var attack = attackArray.length; 


    for (var count = 0 ; count < attack; count ++) 
    { 
     if ((number >= Number(attackArray [count][0])) && (number <= Number(attackArray [count][1]))) 
     { 
     do something ; 
     } 
    } 

} 

如果有人可以看我的代碼,並解釋我做錯了什麼。

+1

你的問題還不清楚。給出一個預期投入/產出的例子。此外,你缺少'attackArray [1]',並且當你使用數字時你正在使用字符串。 –

+0

attackArray [2]應該是attackArray [1]? – happybuddha

+0

attack = attackArray.length;將總是返回2,因爲只有2個。您是否想要在各個陣列中循環元素? – happybuddha

回答

3

我相信你正在試圖比較一個數字與項目值定義的每個數值範圍,其元素0和元素1中的相同索引爲attackArray。如果這是正確的,那麼適用以下內容。

出現在您的代碼段的問題是:

  1. 你有錯指數第3行你的第三行,attackArray[2] = new Array("1","3","2","3","2","3","4");正在打造的第一行創建的attackArray一個新的第三個元素。相反,我認爲你想填充attackArray的第二個元素,它應該是attackArray[1] = new Array("1","3","2","3","2","3","4");或者你可以使用不同的數組語法,如下所示。

  2. 在該函數中,您正在使用攻擊長度數組var attack = attackArray.length;來控制for後面的循環。相反,只要attackArray[0]attackArray[1]長度相同,您就會想要var attack = attackArray[0].length;。你可以這樣想,你的長度沿着你的數組的錯誤維度。你得到的長度是「向下」你的數組或對象列表,而不是「橫跨」陣列的水平模糊。

  3. 在函數中,您對如何遍歷數組感到困惑,並且您有這個attackArray [count][0]attackArray [count][1]倒退。相反,他們應該是attackArray[0][count]attackArray[1][count]。這將允許您正確使用1

下面的代碼應該是一個簡潔的,正確的工作一段代碼來實現自己的目標,在元素0的每個項目和同一指數的元素的項目比較你的電話號碼。您可以將其插入jsfiddle.net中,並且可以在Chrome中使用Javascript控制檯來查看日誌中的結果。這裏是:

var attackArray = []; 
attackArray[0] = ["0","0","2","2","2","3","4"]; 
attackArray[1] = ["1","3","2","3","2","3","4"]; 

function leveltest (number){ 
    var attack = attackArray[0].length; 
    for (var count = 0;count < attack;count ++){ 
    if ((number >= Number(attackArray [0][count])) && 
     (number <= Number(attackArray [1][count]))) { 
     console.log(number + " matches at index " + count); 
     } 
    } 
} 
leveltest(2); 
+0

乍得感謝您的幫助。你的答案是最能幫助我的答案。我能解決我的問題。你的解釋比代碼更有幫助。非常感謝你。 – Patrickw99

0

看起來像在attackArray中的第二個元素有錯誤的索引。

attackArray[2] = new Array("1","3","2","3","2","3","4"); 

attackArray.length == 2 你 「計數」 能上升到1,attackArray [1]是不是由您定義。

0

if中的第二個比較是錯誤的。在第二個循環中,它將是attackArray [1] [1],並且您創建了一個attackArray [0]和attackArray [2]。