javascript Error: Cannot read property '1' of undefined

Iniciado por SrTrp, 9 Octubre 2020, 00:06 AM

0 Miembros y 1 Visitante están viendo este tema.

SrTrp

Hola que tal, llevo ya horas dándole vuelta y no encuentro de donde viene este error " "Cannot read property '1' of undefined" donde esto viene de mi arreglo "aux_arreglo[1]=="valido" && aux_arreglo[2]=="valido")", creo un arreglo con el arreglo que tengo en mi lista de "materias", ya que le voy metiendo arreglos, todo bien inclusive entre la linea de error y donde le asigno eh comprobado de que tenga valor el arreglo y exactamente tiene los valores que deseo eh comprobado con console.log(aux_arreglo[0]), con valor 1 y 2 y me da los valores que tiene, pero al momento que hago la comparación en el if me da error, algo raro de que si me agrega los options al select.

Código (javascript) [Seleccionar]

  var materias = []; 
  function agregarMateria(){
    var materia_txt = document.getElementById("mat_add").value;
    materias.push([materia_txt,"valido","valido"]);
    recargaSelect();
    materia_txt.value="";
  }
  function recargaSelect(){
    var select_my = document.getElementById("list_mats");
    select_my.innerHTML = "";
    var option_default = document.createElement("option");
    option_default.text = "Todos(Seleccióna)";
    option_default.value = "valido";
    select_my.add(option_default);     
    for (var i = 0; i<= materias.length; i++) {
      var aux_arreglo = materias[i];
      if(aux_arreglo[1]=="valido" && aux_arreglo[2]=="valido"){ //ESTA LINEA ME DA ERROR
        var option = document.createElement("option");
        option.text = aux_arreglo[0];
        option.value = aux_arreglo[0];
        select_my.add(option);
      }
    }
   
  }


MinusFour

Código (javascript) [Seleccionar]

for (var i = 0; i<= materias.length; i++) {


Tu ciclo recorre indices desde 0 hasta la longitud del arreglo. Los arreglos empiezan en 0 y la longitud de un arreglo siempre es mayor al último índice del arreglo. Eso quiere decir que si tienes un arreglo de 5 elementos, el último índice que tiene es 4. Tu código prueba con un índice de 5 que no existe, por lo tanto es indefinido.

En pocas palabras, quitale ese = a tu comparación.

SrTrp

Cita de: MinusFour en  9 Octubre 2020, 00:30 AM
Código (javascript) [Seleccionar]

for (var i = 0; i<= materias.length; i++) {


Tu ciclo recorre indices desde 0 hasta la longitud del arreglo. Los arreglos empiezan en 0 y la longitud de un arreglo siempre es mayor al último índice del arreglo. Eso quiere decir que si tienes un arreglo de 5 elementos, el último índice que tiene es 4. Tu código prueba con un índice de 5 que no existe, por lo tanto es indefinido.

En pocas palabras, quitale ese = a tu comparación.

Cierto cierto no me di cuenta muchisimas gracias!, como genere el for y viene por default desde la logitud hasta mayor igual que 0 no lo verifique gracias nuevamente!