bagaimana tidak terdefinisi diperlakukan saat mengulang [duplikat]

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

Output dari kode di atas adalah

Mengapa undefinedjuga dikembalikan, bukankah harus dihentikan oleh ifloop?

Jawaban

1 ASDFGerte Dec 26 2020 at 16:32

Fungsi peta Anda tidak mengembalikan apa pun secara eksplisit jika item tersebut salah, oleh karena itu ia mengembalikan undefined(per default).

Seperti yang ditunjukkan oleh komentar lain, Anda mungkin mencari Array.prototype.filter:

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

Perhatikan bahwa di atas sedikit bertele-tele, .filter(x => x)sudah cukup, filterpanggilan ToBooleankembali lagian. Ini masih akan menyaring setiap falsy nilai meskipun, misalnya 0.