Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

64
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda