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

67
Vistas
Evite que arrray.map regrese indefinido cuando no se cumpla la condición/devolución de llamada

Estaba escribiendo un código y algo me desconcertó. Tengo una matriz de números llamada alarmsList . Ahora deseo iterar a través de esta lista y si un valor es superior a 60, por ejemplo, quiero crear una nueva matriz de objetos (colección) donde almacenamos el valor alto y su índice de la matriz original. Así que toma el siguiente código

 const alarmsList = [1, 61, 77, 4, 5, 6, 7, 8, 85, 4, 3, 55]; const highAlarmsList = alarmsList.map((item, index) => { if(item > 60) { return ({ value: item, index }) } }); console.log(highAlarmsList)

El archivo console.log genera lo siguiente

 [ undefined, { "value": 61, "index": 1 }, { "value": 77, "index": 2 }, undefined, undefined, undefined, undefined, undefined, { "value": 85, "index": 8 }, undefined, undefined, undefined ]

Esta salida es lo que necesito, pero ¿cómo evito que se devuelvan los valores indefinidos? Pensé en usar array.filter pero eso no parece apropiado. ¿Debo usar un método de matriz diferente? No quiero usar un bucle for y empujar a una nueva matriz a menos que esa sea la mejor / única forma de lograr la nueva matriz sin que se devuelvan los valores indefinidos.

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

0

Puede usar Array.filter() para eliminar los valores undefined usando Boolean como predicado:

 const alarmsList = [1, 61, 77, 4, 5, 6, 7, 8, 85, 4, 3, 55]; const highAlarmsList = alarmsList.map((item, index) => { if(item > 60) { return ({ value: item, index }) } }).filter(Boolean); console.log(highAlarmsList)

Puede usar Array.flatMap() y devolver matrices vacías en lugar de undefined , pero eso podría afectar el rendimiento de matrices enormes:

 const alarmsList = [1, 61, 77, 4, 5, 6, 7, 8, 85, 4, 3, 55]; const highAlarmsList = alarmsList.flatMap((item, index) => item > 60 ? { value: item, index } : [] ); console.log(highAlarmsList)

about 4 years ago · Juan Pablo Isaza Denunciar

0

map crea una nueva matriz ejecutando la devolución de llamada en cada elemento de la matriz. Si la condición no se cumple, devolverá indefinido o nulo. Por lo tanto, no es posible omitir el elemento de la salida.

Alternativamente, puede usar reducir o filtrar

 const alarmsList = [1, 61, 77, 4, 5, 6, 7, 8, 85, 4, 3, 55]; const highAlarmsList = alarmsList.reduce((acc, item, index) => { item > 60 && acc.push({ value: item, index }) return acc; }, []) console.log(highAlarmsList)

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