Challenge Bonfire: Falsy Bouncer ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π°Π³Π΅Π½Ρ: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36
.
ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ Falsy Bouncer ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Falsy Π±ΡΠ²Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ NaN .
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ΅ΡΡ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²ΡΡΠΈΠ±Π°Π»Π° Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ [7, "ate", 9]
ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° Β«ateΒ» ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NaN, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π΅ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ².
ΠΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΡ 1 ΠΈ ΡΠ΅ΡΡ 3 Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π±Π»ΠΎΠΊΠΎΠΌ ΠΊΠΎΠ΄Π°, ΡΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡ.
ΠΠΎΠΉ ΠΊΠΎΠ΄:
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, ""]);
ΠΠ°ΡΠ°Π½Π΅Π΅ ΠΈΠ·Π²ΠΈΠ½ΡΡΡΡ, Π΅ΡΠ»ΠΈ Ρ ΡΡΠΎ-ΡΠΎ Π·Π΄Π΅ΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΠ».
NaN
- ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΈ ΠΎΠ½ΠΎ Π»ΠΎΠΆΠ½ΠΎ. "ate"
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠΌ, ΠΈ isNan("ate")
Π²Π΅ΡΠ½Π΅Ρ ΠΈΡΡΠΈΠ½Ρ, Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "ate"
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΆΠ½ΡΠΌ, ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NaN
ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΆΠ½ΡΠΌ. ΠΡΠ°ΡΠΎΡΠ° (ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ) Π»ΠΎΠΆΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΈΡΠΊΠ°ΡΡ ΠΈΡ
, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Javascript Π±ΡΠ΄Π΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΈΡ
, ΠΏΡΠΈΠ²ΠΎΠ΄Ρ ΠΈΡ
ΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ false. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΈΠΌ:
arr = arr.filter(function(val){
return val;
});
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΠΈ ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ!
Π ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Boolean
ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π·Π° Π²Π°Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½Π°:
return arr.filter(Boolean)
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Boolean ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΡΡΠΈΠ½Π½ΡΠ΅ / Π»ΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΡΠΈΠ½Ρ ΠΈΠ»ΠΈ Π»ΠΎΠΆΡ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
Boolean
ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π·Π° Π²Π°Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½Π°:return arr.filter(Boolean)
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Boolean ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΡΡΠΈΠ½Π½ΡΠ΅ / Π»ΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΡΠΈΠ½Ρ ΠΈΠ»ΠΈ Π»ΠΎΠΆΡ.