ループ中に未定義がどのように扱われるか[重複]

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

上記のコードの出力は次のとおりです。

なぜundefinedまた返されるのifですか、ループによって停止されるべきではありませんか?

回答

1 ASDFGerte Dec 26 2020 at 16:32

アイテムが偽物である場合、map関数は明示的に何も返さないため、undefined(デフォルトで)戻ります。

別のコメントが指摘しているように、あなたはおそらく探していArray.prototype.filterます:

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

上記は少し冗長であり、.filter(x => x)十分であり、とにかくリターンをfilter要求することに注意してくださいToBoolean。それはまだどの除外しますfalsy 0を、たとえば、値をけれども。