¿Cómo se trata lo indefinido durante el bucle [duplicado]?

Dec 26 2020
[1, 3, 4, 5, 5, undefined, 4, 3, 4].map((item) => {
    if (item) {
        return item
    }
})

La salida del código anterior es

¿Por qué undefinedtambién se devuelve, no debería ser detenido por el ifbucle?

Respuestas

1 ASDFGerte Dec 26 2020 at 16:32

Su función de mapa no devuelve nada explícitamente si el elemento es falso, por lo tanto, devuelve undefined(por defecto).

Como ha señalado otro comentario, probablemente esté buscando Array.prototype.filter:

console.log([1,3,4,5,5,undefined,4,3,4].filter((item)=>{
  if(item){
    return item;
  }
}));

Tenga en cuenta que lo anterior es un poco detallado, .filter(x => x)sería suficiente, filterpide ToBooleanla devolución de todos modos. Sin embargo, todavía filtrará los valores falsos , por ejemplo, 0.