2012-11-02 70 views
2

我想檢查一個數組中的給定元素是否大於它的兩個相鄰元素,但array [element + 1]返回 - undefined。但是,當我嘗試array1 [(element-1)+2]它工作得很好。Array [element + 1]返回undefined?

這是數組:

var array1 = [1, 5, 56, 6, 7, 8, 12, 5, 1]; 

而且我的代碼:

function biggestOfThree(element){ 
    if((element == 0)||(element == array1Length-1)){ 
     document.write("There aren't 2 adjacent elements in the array"); 
    } 
    else{ 
     if((array1[element]>array1[element+1])&&(array1[element]>array1[element-1])){ 
      document.write(array1[element] + " is bigger than it's adjacent elements") 
     } 
     else{ 
      document.write(array1[element] + " isn't bigger than it's adjacent elements") 
     } 
    } 

} 

...和用戶接收該元素的功能:

function assign(){ 
var i_element = document.getElementById('indexOfTheElement'); 
var i = i_element.value; 
    biggestOfThree(i) 
} 
+0

'array1Length'被定義在哪裏? –

+1

你的意思是寫* array1 [element + 1]返回 - 未定義*對嗎? – climbage

+0

是的,這就是我的意思。 –

回答

6

錯誤你看到的是由於JavaScript的動態輸入。使用parseInt

var i = parseInt(i_element.value); 

+ 1仍把它串並追加1到它。執行-1強制它認爲它是一個整數。因此你的結果。始終轉換爲使用parseInt()

"1" + 1 = 11 
"1" - 1 = 0 

正如@Elias說,最好是使用parseInt函數時定義基數爲int。

parseInt(string, 10) 
       ^radix 
+0

謝謝,就是這樣......我的一個非常愚蠢的錯誤 –

+2

請注意'parseInt'和前導零。最好的強制數字就像'i = +(i_element.value);'或'parseInt(i_element.value,10)' –