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.
¿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.
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);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);