Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

124
Vistas
Cómo encontrar un elemento en una matriz a partir del final

Considere esta matriz:

 const arr = [ [1, 2, 3, 4, 3, 2, 4] ,[1, 0, 3, 4, 3, 2, 0] ,[undefined, 0, null, 4, 3, null, 0] ,[undefined, undefined, 5, 7, undefined, null, undefined] ];

Mi tarea es recortar cada matriz. Los valores válidos son enteros (o flotantes, lo mismo). 0 también se considera válido. Recortar en este caso significa que la matriz debe recortarse al principio y al final.

En los ejemplos anteriores:

 arr[0] does not need to remove any element arr[1] does not need to remove any element arr[2] needs to remove arr[2][0] arr[3] needs to remove arr[3][0], arr[3][1] from the beginning and arr[3][4], arr[3][5], arr[3][6] at the end.

Mi enfoque ha sido el siguiente:

Primero descubra el primer elemento válido en una matriz:

 const foundStartIndex = arr[x].findIndex(el => el >= 0);

Esto me ayudará a dividir la matriz al principio.

Pero, ¿cómo averiguo por dónde empezar a eliminar al final? Hay un "lastIndexOf" pero parece que no acepta una función de la misma manera que lo hace "findIndex". Podría revertir la matriz, encontrar el primer elemento válido y calcular dónde deberían estar los lugares cuando se revertirá. Pero tal vez hay una mejor manera de hacer esto? Tenga en cuenta que necesito saber dónde, en qué índice, debo comenzar a cortar, ya que el índice se usará por otras razones.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Así es como lo haría.

Divido el problema en 2: recortar la parte izquierda y recortar la parte derecha.

Para recortar la parte izquierda, simplemente recorremos la matriz hasta obtener un número, luego cortamos la matriz desde el principio hasta ese punto.

Para recortar el derecho, es solo un espejo del ajuste izquierdo.

Luego, en buena medida, agregué una función que llama a los otros 2 para facilitar su uso.

Nota: aunque verifiqué un tipo de number , siéntete libre de usar una verificación diferente, como Number.isInteger() o element >= 0 .

 /** * @param {Array} arr */ function leftTrimArray(arr) { let i = 0 let element = arr[i] while (typeof element !== 'number') { i++ element = arr[i] } return arr.slice(i) } /** * @param {Array} arr */ function rightTrimArray(arr) { let i = arr.length - 1 let element = arr[i] while (typeof element !== 'number') { i-- element = arr[i] } return arr.slice(0, i + 1) } function trimArray(arr) { return rightTrimArray(leftTrimArray(arr)) } const arrs = [ [1, 2, 3, 4, 3, 2, 4], [1, 0, 3, 4, 3, 2, 0], [undefined, 0, null, 4, 3, null, 0], [undefined, undefined, 5, 7, undefined, null, undefined] ]; arrs.forEach(arr => { console.log(trimArray(arr)); })

about 4 years ago · Juan Pablo Isaza Denunciar

0

Siguiendo tu enfoque, te recomiendo lo siguiente:

 const reverseEndIndex = arr[x].reverse().findIndex(el => el >= 0); const foundEndIndex = arr[x].length - 1 - reverseLastIndex;

La segunda línea de código traduce el índice de la matriz invertida al índice de la matriz no invertida.

about 4 years ago · Juan Pablo Isaza Denunciar

0

No está muy claro a partir de su pregunta por qué necesita usar el índice "por otras razones", pero si necesita matrices limpias que contengan solo números, puede map y luego filter todo lo que no sea null o un número.

 const arr = [ [1, 2, 3, 4, 3, 2, 4], [1, 0, 3, 4, 3, 2, 0, 'Bob'], [undefined, 0, null, 4, 3, null, 0, 0.2], [undefined, undefined, 5, 7, undefined, null, undefined] ]; const out = arr.map(n => n.filter(el => { return el !== null && !isNaN(el); })); console.log(out);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda