jak jest traktowane niezdefiniowane podczas zapętlania [duplikat]

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

Wynik powyższego kodu to

Dlaczego jest undefinedrównież zwracany, czy nie powinien być zatrzymywany przez ifpętlę?

Odpowiedzi

1 ASDFGerte Dec 26 2020 at 16:32

Twoja funkcja mapy nie zwraca niczego jawnie, jeśli element jest fałszywy, dlatego zwraca undefined(domyślnie).

Jak wskazał inny komentarz, prawdopodobnie szukasz Array.prototype.filter:

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

Zauważ, że powyższe jest nieco rozwlekłe, .filter(x => x)wystarczyłoby, i tak filterwywołuje ToBooleanpowrót. Jednak nadal będzie odfiltrowywać wszelkie fałszywe wartości, np. 0.