Freecodecamp: ๋ชจ๋‹ฅ๋ถˆ: ๊ฑฐ์ง“ ๊ฒฝ๋น„์› - ๋ชจ์ˆœ๋œ ์ง€์นจ

์— ๋งŒ๋“  2015๋…„ 12์›” 15์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: freeCodeCamp/freeCodeCamp

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

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ˆ ์ ์œผ๋กœ Boolean ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
return arr.filter(Boolean) , Boolean์€ ์ฐธ/๊ฑฐ์ง“ ๊ฐ’์„ ์ทจํ•˜๊ณ  ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์—ฌ๊ธฐ์— ๋ญ”๊ฐ€ ์˜คํ•ด๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ๋ฏธ๋ฆฌ ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

NaN ๋Š” ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์‹ค์ œ ๊ฐ’์ด๋ฉฐ ๊ฑฐ์ง“์ž…๋‹ˆ๋‹ค. "ate" ๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉฐ isNan("ate") ๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ "ate" ๊ฐ’์€ false๊ฐ€ ์•„๋‹ˆ๋ฉฐ NaN ์˜ ํŠน์ • ๊ฐ’๋งŒ false์ž…๋‹ˆ๋‹ค. ๊ฑฐ์ง“ ๊ฐ’์˜ ์žฅ์ (๋ฐ ๊ฐ€๋” ๋ฒ„๊ทธ ์†Œ์Šค)์€ ๋ถ€์šธ ๊ฐ’์ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค Javascript๊ฐ€ ๋ถ€์šธ ๊ฐ’ false๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋ช…์‹œ์ ์œผ๋กœ ์ฐพ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ํ•„ํ„ฐ ํ•จ์ˆ˜์˜ ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

arr = arr.filter(function(val){
  return val;
});

๊ฐ์‚ฌํ•˜๊ณ  ํ–‰๋ณตํ•œ ์ฝ”๋”ฉ!

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ˆ ์ ์œผ๋กœ Boolean ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
return arr.filter(Boolean) , Boolean์€ ์ฐธ/๊ฑฐ์ง“ ๊ฐ’์„ ์ทจํ•˜๊ณ  ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰