Estoy tratando de escribir una versión del algoritmo de Luhn, pero ¿por qué mi código no duplica todos los índices impares aquí? Parece estar duplicando un patrón de índice, pero no entiendo cómo obtuvo ese patrón de mi código.
const validateCred = (array) => { let removeLast = array.pop(); let reversed = array.reverse(); console.log(reversed); for (let i = reversed[0]; i < reversed.length; i++) if (reversed[i] % 2 !== 0) { reversed[i] *= 2; } console.log(reversed) [ 0, 8, 6, 1, 0, 8, 0, 9, 7, 7, 6, 9, 3, 5, 4 ] [ 0, 8, 6, 2, 0, 8, 0, 18, 14, 14, 6, 18, 6, 10, 4 ]
Como puede ver, está duplicando algunos de los dígitos, pero no los impares.
Si está hablando de índices impares, el problema que usa invierte [i] en el bucle "for" y luego en la condición "if". Reemplazó ambas instancias por solo "i". La "i" representa el índice en este código.
Función fija:
const validateCred = (array) => { let removeLast = array.pop(); let reversed = array.reverse(); console.log(reversed); for (let i = 0 ; i < reversed.length; i++) if (i % 2 !== 0) { reversed[i] *= 2; } console.log(reversed) }
Si se trata de duplicar cada elemento impar en la matriz, esto funcionará: mantenga "i" en el ciclo e invierta [i] en el "si":
const validateCred = (array) => { let removeLast = array.pop(); let reversed = array.reverse(); console.log(reversed); for (let i = 0; i < reversed.length; i++) if (reversed[i] % 2 !== 0) { reversed[i] *= 2; } console.log(reversed) }