Array [element + 1]返回undefined?

时间:2012-11-02 16:13:38

标签: javascript arrays undefined

我正在尝试检查数组中的给定元素是否大于它的两个相邻元素,但是array [element + 1]返回 - undefined。但是,当我尝试使用array1 [(element-1)+2]时,它的工作正常。

这是数组:

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)
}

1 个答案:

答案 0 :(得分:6)

您看到的错误是由于JavaScript的动态类型。使用 parseInt

var i = parseInt(i_element.value);

+ 1仍然认为它是一个字符串并向其追加1。执行-1会强制它将其视为int。因此你的结果。始终使用parseInt()

转换为int
"1" + 1 = 11
"1" - 1 = 0

正如@Elias所说,最好在使用parseInt时定义基数。

parseInt(string, 10)
                  ^ radix
相关问题