ループ中に未定義がどのように扱われるか[重複]
[1, 3, 4, 5, 5, undefined, 4, 3, 4].map((item) => {
if (item) {
return item
}
})
上記のコードの出力は次のとおりです。
なぜundefined
また返されるのif
ですか、ループによって停止されるべきではありませんか?
回答
1 ASDFGerte
アイテムが偽物である場合、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を、たとえば、値をけれども。