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

139
Visualizações
For loop rompe una matriz no relacionada

Oye, estoy usando titiritero y cuando ejecuto este código:

 console.log(dealsId[i]); for (var i = 0; i < sizes.length; i++) { var refIdClasses = await sizes[i].$eval('input', a => a.getAttribute('class')); if (refIdClasses != 'disabled') { var refId = await sizes[i].$eval('input', a => a.getAttribute('value')); var size = await sizes[i].$eval('input', a => a.getAttribute('data-size')); refIds.push({ size: size, refId: refId }); } } console.log(dealsId[i]);

El ID de ofertas funciona antes del ciclo for y después del ciclo dice indefinido y estoy muy confundido sobre por qué.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Var i tiene un alcance global, por lo que al usar var i=0 definitivamente está creando un conflicto de alcance. Utilice let u otro nombre de variable en su lugar.

about 4 years ago · Juan Pablo Isaza Relatório

0

Ese es el problema con var s. Puede declararlos y volver a declararlos en el mismo ámbito sin previo aviso.

Supongo que declaraste una var i en el código antes de lo que mostraste, pero la vuelves a declarar en el bucle for . i < sizes.length es la condición para romper el bucle, el bucle se rompe i ahora está fuera de los límites de su matriz, por lo tanto, no está definido (si dealsId tiene un tamaño inferior a la matriz de sizes ).

No está "sin relación" ya que usó la misma variable para recorrer 2 matrices diferentes. Como no sabemos si las dos matrices tienen exactamente el mismo tamaño, no podemos identificar con una precisión del 100 % lo que está pasando, pero me quedo con eso.

about 4 years ago · Juan Pablo Isaza Relatório

0

Esto se debe a que su ciclo for también está usando i para iterar, posiblemente en conflicto con i en dealsId[i] .

La posible solución podría ser cambiar la variable en el bucle for de i a j.

El código se convierte en:

 console.log(dealsId[i]); for (var j = 0; j < sizes.length; j++) { var refIdClasses = await sizes[j].$eval('input', a => a.getAttribute('class')); if (refIdClasses != 'disabled') { var refId = await sizes[j].$eval('input', a => a.getAttribute('value')); var size = await sizes[j].$eval('input', a => a.getAttribute('data-size')); refIds.push({ size: size, refId: refId }); } } console.log(dealsId[i]);
about 4 years ago · Juan Pablo Isaza 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