Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

88
Vistas
Problema de bucle de JavaScript en medio del bucle

Hola chicos, estoy tratando de recorrer la matriz de números, y lo que quiero que haga mi función es que cada vez que la posición de un número en la matriz sea un número PAR, quiero que un programa me devuelva la palabra 'Yan' en lugar de un número. pero cuando la posición de un número es un número impar, quiero que devuelva solo un número.

Pero por alguna razón, en el medio de la matriz, obtengo la palabra 'Yan' en lugar de obtener un número.

 const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8] const reversValid1 = valid1.reverse() const myArray = [] const validateCard = (arr) =>{ for(let i = 0; i < arr.length; i++){ if(arr.indexOf(reversValid1[i])%2 == 1){ console.log('Yan') } else{ console.log(arr[i]) } } } validateCard(reversValid1)

Estoy recibiendo la siguiente respuesta:

8 yan 8 yan 1 yan 8 yan 9 yan yan yan 9 yan 5 yan

Puedes ver que obtengo 3 Yan consecutivamente.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

¿Por qué en lugar de usar indexOf no usar directamente i ?

 const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8] const reversValid1 = valid1.reverse() const myArray = [] const validateCard = (arr) => { for (let i = 0; i < arr.length; i++) { if (i % 2 == 1) { console.log('Yan') } else { console.log(arr[i]) } } } validateCard(reversValid1)

El problema es que indexOf encontrará múltiples index del mismo número.

Ejemplo:

 const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8] const reversValid1 = valid1.reverse() for (let i = 0; i < reversValid1.length; i++) { console.log(reversValid1[i], reversValid1.indexOf(reversValid1[i])) }

Como puede ver, el mismo número tiene el mismo índice en lugar del índice de la matriz.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes usar Array.forEach :

 const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]; const reversValid1 = valid1.slice().reverse(); const validateCard = (arr) => { arr.forEach((v,i)=>{ if (i%2 == 0) { console.log('Yan'); } else { console.log(v); } }); }; validateCard(reversValid1);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto podría ser lo que quieres:

 const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]; const reversValid1 = valid1.reverse(); const myArray = [] const validateCard = (arr) => { for (let i = 0; i < arr.length; i++) { if (arr[i] % 2 === 0) { console.log('Yan'); } else { console.log(arr[i]); } } } validateCard(reversValid1);

O esto:

 const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]; const reversValid1 = valid1.reverse(); const validateCard2 = (arr) => { for (let i = 0; i < arr.length; i++) { if (i % 2 === 0) { console.log('Yan'); } else { console.log(arr[i]); } } } validateCard2(reversValid1);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda