2017-03-18 3 views
1

J'ai un tableau que je créé comme ceci:TypeError: arrayal [i] est indéfini mais il est défini

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

var arrayal = []; 

arrayal = gelenveri.split(" "); 

J'utilise cette arrayal pour ma fonction, mais je reçois une erreur (TypeError: arrayal [i ] est indéfini mais il est défini) à cette instruction while qui est à l'intérieur d'une autre boucle:

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

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


} 

lorsque je tente de regarder typeof (arrayal [i]), il est dans le type de chaîne. Je n'ai pas pu résoudre ce problème pendant une heure. Une idée?

Ceci est mon code complet:

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

avant while vérifier si 'arrayal.length> 0' –

+0

@TamilSelvanC encore vous entrez dans cette erreur. vous devriez arrêter 'while' –

+0

Je pense que' i ++; 'provoque ce problème essayer de le mettre en dehors de tout en boucle .... –

Répondre

0
arrayal[i] is undefined 

Le message d'erreur est assez clair. Bien que arrayal ait été défini, arrayal[i] n'est pas défini car vous essayez d'accéder à un élément qui n'est pas présenté dans ce tableau.

Inhort, votre tableau arrayal longueur est inférieure à i, vous devez ajouter une condition dans tout en vérifier la longueur si arrayal ainsi.

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

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


} 
+0

mais ma boucle for est que pour (; i capzyel

+0

j'ai ajouté le code entier pour vous – capzyel

+0

désolé c'était mon mauvais. Tout va bien :) – capzyel