como indefinido é tratado durante o loop [duplicado]

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

A saída do código acima é

Por que undefinedtambém é retornado, não deveria ser interrompido pelo ifloop?

Respostas

1 ASDFGerte Dec 26 2020 at 16:32

Sua função de mapa não retorna nada explicitamente se o item for falso, portanto, ele retorna undefined(por padrão).

Como outro comentário apontou, você provavelmente está procurando Array.prototype.filter:

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

Observe que o texto acima é um pouco prolixo, .filter(x => x)bastaria, filterchama ToBooleanno retorno de qualquer maneira. Ele ainda filtrará quaisquer valores falsos , por exemplo, 0.