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", "", false, 9]) ๊ฐ [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")
๋ true๋ฅผ ๋ฐํํ์ง๋ง "ate"
๊ฐ์ false๊ฐ ์๋๋ฉฐ NaN
์ ํน์ ๊ฐ๋ง false์
๋๋ค. ๊ฑฐ์ง ๊ฐ์ ์ฅ์ (๋ฐ ๊ฐ๋ ๋ฒ๊ทธ ์์ค)์ ๋ถ์ธ ๊ฐ์ด ํ์ํ ๋๋ง๋ค Javascript๊ฐ ๋ถ์ธ ๊ฐ false๋ก ๊ฐ์ ๋ณํํ๊ธฐ ๋๋ฌธ์ ์ฝ๋์ฒ๋ผ ๋ช
์์ ์ผ๋ก ์ฐพ์ ํ์๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ ํํฐ ํจ์์ ์ฝ๋๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
arr = arr.filter(function(val){
return val;
});
๊ฐ์ฌํ๊ณ ํ๋ณตํ ์ฝ๋ฉ!
๊ทธ๋ฆฌ๊ณ ๊ธฐ์ ์ ์ผ๋ก Boolean
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ ์ ์์ผ๋ฏ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
return arr.filter(Boolean)
, Boolean์ ์ฐธ/๊ฑฐ์ง ๊ฐ์ ์ทจํ๊ณ ์ฐธ ๋๋ ๊ฑฐ์ง์ ๋ฐํํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ทธ๋ฆฌ๊ณ ๊ธฐ์ ์ ์ผ๋ก
Boolean
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ ์ ์์ผ๋ฏ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.return arr.filter(Boolean)
, Boolean์ ์ฐธ/๊ฑฐ์ง ๊ฐ์ ์ทจํ๊ณ ์ฐธ ๋๋ ๊ฑฐ์ง์ ๋ฐํํฉ๋๋ค.