Wie wird undefiniert beim Looping [Duplikat] behandelt?

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

Die Ausgabe des obigen Codes ist

Warum wird undefinedauch zurückgegeben, sollte es nicht von der ifSchleife gestoppt werden ?

Antworten

1 ASDFGerte Dec 26 2020 at 16:32

Ihre Kartenfunktion gibt nichts explizit zurück, wenn das Element falsch ist, daher wird undefined(standardmäßig) zurückgegeben.

Wie ein anderer Kommentar hervorgehoben hat, suchen Sie wahrscheinlich nach Array.prototype.filter:

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

Beachten Sie, dass das oben genannte etwas ausführlich ist, .filter(x => x)würde ausreichen, filterfordert ToBooleanauf jeden Fall die Rückgabe. Es werden jedoch weiterhin alle falschen Werte herausgefiltert, z. B. 0.