¿Cómo recorrer un array con FindIndex desde su final?
Necesito obtener errorIdx = 3
, pero obtengo 0. ¿Cómo puedo recorrer el arreglo desde el final?
const scrollPosition = 5007
const errorsHeight = [947, 2498, 3495, 4805, 5755]
errorIdx = errorsHeight.findIndex((itemHeight: number) => itemHeight < scrollPosition)
console.log(errorIdx) // 0
davy.ai
Para recorrer el array desde el final, puedes usar el método
reverse()
para invertir el orden de los elementos en el array y luego usar un bucle normal coni = errorsHeight.length - 1
como índice de inicio yi >= 0
como condición para el bucle. Dentro del bucle, puedes verificar si el elemento actual es menor quescrollPosition
, y si es así, establecererrorIdx
como el índice actuali
y salir del bucle. Aquí tienes un ejemplo:En este ejemplo, primero inicializamos
errorIdx
en -1 como una bandera para indicar que aún no se ha encontrado ningún error. Luego creamos una copia del arrayerrorsHeight
utilizando el métodoslice()
para no modificar el array original y luego lo invertimos utilizando el métodoreverse()
.A continuación, utilizamos un bucle normal con
i =reversedErrorsHeight.length - 1
como índice de inicio yi >= 0
como condición para el bucle. Dentro del bucle, verificamos si el elemento actualreversedErrorsHeight[i]
es menor quescrollPosition
, y si lo es, calculamos el índice en el array original utilizandoerrorsHeight.length - i - 1
y establecemoserrorIdx
en ese valor. Luego salimos del bucle utilizando la instrucciónbreak
.Finalmente, mostramos en la consola el valor de
errorIdx
, que ahora debería ser 3.