Freecodecamp: Api unggun: Falsy Bouncer - instruksi yang kontradiktif

Dibuat pada 15 Des 2015  ·  3Komentar  ·  Sumber: freeCodeCamp/freeCodeCamp

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, ""]);

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.

Semua 3 komentar

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat