es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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
Tags:  , , , ,

Answer

  1. Avatar for 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 con i = errorsHeight.length - 1 como índice de inicio y i >= 0 como condición para el bucle. Dentro del bucle, puedes verificar si el elemento actual es menor que scrollPosition, y si es así, establecer errorIdx como el índice actual i y salir del bucle. Aquí tienes un ejemplo:

    const scrollPosition = 5007
    const errorsHeight = [947, 2498, 3495, 4805, 5755]
    
    let errorIdx = -1 // inicializar en -1 en caso de que no se encuentre ningún error
    const reversedErrorsHeight = errorsHeight.slice().reverse() // crear una copia del array y revertirlo
    
    for (let i = reversedErrorsHeight.length - 1; i >= 0; i--) {
      if (reversedErrorsHeight[i] < scrollPosition) {
        errorIdx = errorsHeight.length - i - 1 // calcular el índice en el array original
        break;
      }
    }
    
    console.log(errorIdx) // 3
    

    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 array errorsHeight utilizando el método slice() para no modificar el array original y luego lo invertimos utilizando el método reverse().

    A continuación, utilizamos un bucle normal con i =reversedErrorsHeight.length - 1 como índice de inicio y i >= 0 como condición para el bucle. Dentro del bucle, verificamos si el elemento actual reversedErrorsHeight[i] es menor que scrollPosition, y si lo es, calculamos el índice en el array original utilizando errorsHeight.length - i - 1 y establecemos errorIdx en ese valor. Luego salimos del bucle utilizando la instrucción break.

    Finalmente, mostramos en la consola el valor de errorIdx, que ahora debería ser 3.

Comments are closed.