TypeError:arrayal [i]未定义但已定义

时间:2017-03-18 09:13:32

标签: javascript arrays undefined indexof

我有一个我这样创建的数组:

var gelenveri = document.getElementById("cakalinput").value;

var arrayal = [];

arrayal = gelenveri.split(" ");

我对我的函数使用了这个arrayal,但是我得到了一个错误(TypeError:arrayal [i]未定义但是已定义)此while语句位于另一个for循环中:

while(((!(arrayal[i].indexOf('%') > -1)) || (arrayal[i] != "-") )){

temizarray[j] = temizarray[j] + arrayal[i];
i++;


}

当我尝试查看typeof(arrayal [i])时,它是字符串类型。我一个小时都无法解决这个问题。有什么想法吗?

这是我的全部代码:

function cakallik() {
    var gelenveri = document.getElementById("cakalinput").value;
    var arrayal = [];
    arrayal = gelenveri.split(" ");
    var uzunluk = arrayal.length;
    var temizarray = [];
    var j = 0;
    var i = 0;

    for (; i < uzunluk;) {
        temizarray[j] = arrayal[i]; //ilk satır alındı
        i++;
        j++;
        temizarray[j] = arrayal[i]; //ikincisatır alındı
        i++;
        j++;
        temizarray[j] = arrayal[i]; //üçüncü satır alındı
        i++;
        j++;
        temizarray[j] = arrayal[i]; //dördüncü alındı
        i++;
        j++;
        temizarray[j] = arrayal[i]; // beşinci alındı
        i++;

        while (arrayal[i] != "-") {
            temizarray[j] = temizarray[j] + arrayal[i];
            i++;
        }

        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        console.log(typeof (arrayal[i]));

        while (((!(arrayal[i].indexOf('%') > -1)) || (arrayal[i] != "-"))) {
            temizarray[j] = temizarray[j] + arrayal[i];
            i++;
        }

        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        i++;
        j++;
        temizarray[j] = arrayal[i];
        i++;
        j++;
        temizarray[j] = arrayal[i];
    }

    console.log(temizarray);
}

1 个答案:

答案 0 :(得分:0)

arrayal[i] is undefined

错误信息非常清楚。虽然arrayal已定义,但未定义arrayal[i],因为您正在尝试访问该数组中未显示的元素。

简化,您的数组arrayal长度小于i,您应该添加一个条件,同时检查arrayal的长度。

while(arrayal.length < i && ((!(arrayal[i].indexOf('%') > -1)) || (arrayal[i] != "-") )){

temizarray[j] = temizarray[j] + arrayal[i];
i++;


}