Tantangan Api Unggun: Falsy Bouncer memiliki masalah.
Agen Pengguna adalah: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36
.
Instruksi ke Falsy Bouncer menunjukkan bahwa nilai Falsy terdiri dari berbagai jenis termasuk NaN .
Tes pertama mengharuskan fungsi panggilan bouncer([7, "ate", "", false, 9]) harus mengembalikan [7, "ate", 9]
namun perhatikan bahwa string "makan" adalah NaN oleh karena itu tidak boleh disertakan dalam larik yang dihasilkan.
Oleh karena itu tampaknya tidak ada cara untuk lulus tes 1 dan tes 3 dengan blok kode yang sama, mereka adalah jawaban yang saling eksklusif.
kode saya:
function bouncer(arr) {
arr = arr.filter(function(val){
if (val === false || val === null || val === undefined || val === "" || val === 0 || isNaN(val)) return false;
return true;
});
return arr;
}
bouncer([false, null, 0, NaN, undefined, ""]);
Mohon maaf sebelumnya jika saya salah memahami sesuatu di sini.
NaN
adalah nilai aktual yang dapat dimiliki variabel dan itu salah. "ate"
bukan angka dan isNan("ate")
akan mengembalikan true, tetapi nilai "ate"
bukan falsey, hanya nilai spesifik NaN
yang falsey. Keindahan (dan kadang-kadang sumber bug) dari nilai falsey adalah Anda tidak perlu mencarinya secara eksplisit seperti yang dilakukan kode Anda, karena kapan pun nilai boolean diperlukan, Javascript akan mengetik paksa nilai tersebut ke nilai boolean false. Artinya, kode untuk fungsi filter Anda dapat berupa ini:
arr = arr.filter(function(val){
return val;
});
Terima kasih dan selamat membuat kode!
Dan, secara teknis, Anda dapat menggunakan fungsi Boolean
untuk melakukannya untuk Anda, sehingga masalahnya dapat diselesaikan:
return arr.filter(Boolean)
, karena Boolean mengambil nilai true/falsy dan mengembalikan true atau false.
Komentar yang paling membantu
Dan, secara teknis, Anda dapat menggunakan fungsi
Boolean
untuk melakukannya untuk Anda, sehingga masalahnya dapat diselesaikan:return arr.filter(Boolean)
, karena Boolean mengambil nilai true/falsy dan mengembalikan true atau false.