javascript - 类型错误 : arrayal[i] is undefined but it is defined

标签 javascript arrays undefined indexof

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

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

var arrayal = [];

arrayal = gelenveri.split(" ");

我在函数中使用这个 arrayal,但在另一个 for 循环中的 while 语句中出现错误(TypeError: arrayal[i] 未定义,但已定义):

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

最佳答案

arrayal[i] is undefined

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

简而言之,你的数组 arrayal 长度小于 i,你应该在 while 中添加一个条件来检查 arrayal 的长度。

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

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


}

关于javascript - 类型错误 : arrayal[i] is undefined but it is defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42872485/

相关文章:

c - C 中带有字符串的双指针/使用 malloc 指向数组的指针

ios - 用函数修改多张图片

数组中的 Javascript 标点返回 'undefined'

javascript - 浏览图像并将其传递给弹出窗口

java - 使用数组时出现 java.util.nosuchelementException 错误?

javascript - 模拟 firebase 模块后模拟 firebase auth 方法的实现

javascript - Uncaught ReferenceError : isApp is not defined

javascript - 检查 Javascript 中是否存在变量的最佳方法?

javascript - 如何将 .hover 功能添加到单元格中的图像?

javascript - Date.getDay() javascript 返回错误的日期