Me gustaría retroceder en una matriz en javascript y luego obtener el índice de cada elemento en la matriz, por ejemplo, si una matriz tiene 10 elementos y se repite hacia atrás, registraría 9, 8, 7, 6, 5, 4, 3 , 2, 1, 0. Por alguna extraña razón, recibo un montón de -1 negativos y estoy confundido por qué no devolverá el índice correctamente.
aquí está el código
//Arrays I would like to pass into the function const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]; const invalid1 = [4, 5, 3, 2, 7, 7, 8, 7, 7, 1, 0, 9, 1, 7, 9, 5]; function validateCred(arr) { let sum = 0; for (let i = arr.length - 1; i >= 0; i--) { console.log(arr.indexOf(i)); } } console.log(validateCred(valid1));¿Por qué -1 s?
Es debido a arr.indexOf(i) cuando el ciclo comienza i=15 entonces:
arr.indexOf(15) devolverá -1 porque no tiene un 15 en su matriz.
siguiente i=14 igual que arriba.
. . .
i=9 entonces encontrará el elemento en el índice 3 .
Como UnholySheep explica arriba, Array.indexOf(i) le da el índice de la primera aparición del valor representado por i en la matriz. Aquí hay un código para ayudarlo a depurar:
function validateCred(arr) { let sum = 0 for (let i = arr.length - 1; i >= 0; i--) { console.log(i) // log the index console.log(arr[i]) // log the value } }