Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

308
Visualizações
¿Cómo puedo deshacerme del error - TypeError: no se puede leer la propiedad '8' de undefined

La declaración while sigue arrojando un error (TypeError: no se puede leer la propiedad '8' de undefined), sin embargo, console.log aún genera el resultado que debe.

 var hold = []; for (let i = 0; i < (clothes.length - 1); i++) { let count = 0; if (hold.length === 0) { hold.push(clothes[i]); } else { console.log(clothes[i][8], hold[count][8]); while (clothes[i][8] < hold[count][8]) { count++; } hold.slice(count, 0, clothes[i]); } }
about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

Esta parte del código incrementa el count más allá de la duración de la hold[]

 while (clothes[i][8] < hold[count][8]){ count ++; };

paso a paso manualmente:

  • ropa[0] se agrega como espera[0] por la cláusula "si la espera está vacía"
  • clothes[1] se compara con hold[0] y es < entonces count++
  • clothes[1] se compara con hold[1], pero no hay hold[1], por lo que aparece el error

Añadir una cláusula en el while

 while (count < hold.length && clothes[i][8] < hold[count][8]){ count ++; };

Tenga en cuenta que la verificación de longitud debe ser la primera, de lo contrario, obtendrá el mismo error (hay otras formas, como break el while ). La segunda parte de && solo se valora si la primera parte es true .


Tiene otros problemas para detener una solución completa:

 for (let i = 0; i < (clothes.length - 1); i++){

se desplazará a la longitud-1, por lo que si tiene 3 elementos, solo obtendrá dos. Necesitas usar cualquiera

  • i<clothes.length
  • i<=(clothese.length-1)

y

 hold.slice(count, 0, clothes[i]);

no es la sintaxis para .slice y slice devuelve una nueva matriz, no cambia la matriz en su lugar. Esto debería ser

 hold.splice(count, 0, clothes[i]);

Dando un fragmento actualizado:

 var clothes = [[2],[1],[3]]; var hold = [] for (let i = 0; i < clothes.length; i++) { var count = 0; if (hold.length === 0) { hold.push(clothes[i]); } else { while (count<hold.length && clothes[i][0] < hold[count][0]) { count++; }; if (count == hold.length) { hold.push(clothes[i]) } else { hold.splice(count, 0, clothes[i]); } } } console.log(hold.join(","));

about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda