首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: arrayal[i]未定义,但已定义

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

Stack Overflow用户
提问于 2017-03-18 09:13:32
回答 1查看 77关注 0票数 1

我创建了这样一个数组:

代码语言:javascript
复制
var gelenveri = document.getElementById("cakalinput").value;

var arrayal = [];

arrayal = gelenveri.split(" ");

我在函数中使用了这个数组,但是我得到了一个错误(TypeError: arrayali是未定义的,但它是定义的)在这个while语句中,它位于另一个for循环中:

代码语言:javascript
复制
while(((!(arrayal[i].indexOf('%') > -1)) || (arrayal[i] != "-") )){

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


}

当我试图查看类型(Arrayali)时,它是字符串类型。我一个小时都解决不了这个问题。有什么想法吗?

这是我的全部代码:

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-18 09:17:00

代码语言:javascript
复制
arrayal[i] is undefined

错误信息非常清楚。虽然arrayal被定义了,但是没有定义arrayal[i],因为您试图访问该数组中没有显示的元素。

简而言之,您的数组arrayal长度小于i,您应该在其中添加一个条件,以检查长度(如果arrayal也是)。

代码语言:javascript
复制
while(arrayal.length < i && ((!(arrayal[i].indexOf('%') > -1)) || (arrayal[i] != "-") )){

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


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42872485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档