2012-11-02 68 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)' –