๐Ÿ“… TIL #10

์กฐ๊ฑด๋ฌธ๊ณผ ๋ฌธ์ž์—ด

1. ์กฐ๊ฑด๋ฌธ

์กฐ๊ฑด๋ฌธ ๊ธฐ์ดˆ :

1. ifโ€ฆelse ifโ€ฆ๋ฌธ๋ฒ•

if (truthy or falsy ํ•œ ๊ฐ’) {
  //๊ด„ํ˜ธ์•ˆ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ’
}
else if (/*if์•ˆ์— ๊ด„ํ˜ธ๊ฐ€ falsyํ•œ ๊ฒฝ์šฐ*/) {
  //๊ด„ํ˜ธ์•ˆ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ’
}
else {
  //if ์™€ else if์— ๋Œ€ํ•œ ์กฐ๊ฑด์ด ๋ชจ๋‘ ๋‹ค ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๋•Œ์˜ ๊ฐ’
}

์กฐ๊ฑด๋ฌธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๋ฌธ๋ฒ•์— ํ•ด๋‹นํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๊ฑฐ์ง“์œผ๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฐ’์ด ์žˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ

  1. false
  2. undefined
  3. null
  4. 0
  5. NaN
  6. the empty string (โ€œโ€)

์— ๋Œ€ํ•œ ๊ฐ’์€ false ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋œ๋‹ค.

2. if ์ค‘์ฒฉ๋ฌธ

if (truthy or falsy ํ•œ ๊ฐ’) {
  if (์ฒซ๋ฒˆ์งธ์— ํ•ด๋‹น๋˜๋ฉด์„œ) {
  // ๋‘๊ฐ€์ง€ if์— ํ•ด๋‹น๋˜๋Š” ๊ฐ’
  }
  else {
  // ์ฒซ๋ฒˆ์งธ if ์กฐ๊ฑด์—๋Š” ํ•ด๋‹น๋˜์ง€๋งŒ ๋‘๋ฒˆ์งธ๋Š” ํ•ด๋‹น์ด ์•ˆ๋  ๋•Œ 
  }
}

์ด๋Ÿฐ์‹์œผ๋กœ if ๋ฌธ์€ ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.




2. ์กฐ๊ฑด๋ฌธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 13๋ฒˆ ๋ฌธ์ œ

์กฐ๊ฑด๋ฌธ 13๋ฒˆ :

์ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๋“ฑ๊ธ‰์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฃผ์˜์‚ฌํ•ญ :
    1. ๋งŒ์•ฝ ์ฃผ์–ด์ง„ ์ ์ˆ˜๊ฐ€ 100์„ ์ดˆ๊ณผํ•˜๊ฑฐ๋‚˜ 0 ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ, ๋ฌธ์ž์—ด โ€˜INVALID SCOREโ€™๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    2. ๊ฐ ๋“ฑ๊ธ‰์˜ ์ตœ๊ณ  ์ ์ˆ˜๋ณด๋‹ค 7์  ์ดํ•˜์ธ ๊ฒฝ์šฐ, ๋“ฑ๊ธ‰๊ณผ ํ•จ๊ป˜ โ€˜-โ€˜๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    3. ๊ฐ ๋“ฑ๊ธ‰์˜ ์ตœ์ € ์ ์ˆ˜๋ณด๋‹ค 8์  ์ด์ƒ์ธ ๊ฒฝ์šฐ, ๋“ฑ๊ธ‰๊ณผ ํ•จ๊ป˜ โ€˜+โ€™๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. F+ ์™€ F- ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ :
    let output = convertScoreToGradeWithPlusAndMinus(91);
    console.log(output); // 'A-'
    
  • pseudocode(์ˆ˜๋„์ฝ”๋“œ)
    1. ์ฃผ์˜์‚ฌํ•ญ 1๋ฒˆ์งธ๋ฅผ ๋จผ์ € ํ•ด๊ฒฐํ•ด ์ค€๋‹ค.
    2. 1์˜ ์ž๋ฆฌ๋ฅผ ๊ตฌํ•ด์„œ 0~2 ๋Š” โ€˜-โ€˜ , 8~9 ๋Š” โ€˜+โ€™ ๊ฐ’์ด ๋‚˜์˜ค๋„๋ก ๋งŒ๋“ ๋‹ค.
    3. 100์ ์ผ ๊ฒฝ์šฐ ๋”ฐ๋กœ ์กฐ๊ฑด๋ฌธ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.
    4. ๊ฐ ์ ์ˆ˜๋งˆ๋‹ค ํ•ด๋‹นํ•˜๋Š” ๋“ฑ๊ธ‰์˜ ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.
    5. return (๋ฐ˜ํ™˜) ํ•  ๋•Œ ๋“ฑ๊ธ‰ + ์ผ์˜์ž๋ฆฌ ๋ฅผ ํ•ด์ค€๋‹ค.
  if (100 < score || score < 0) {
    return 'INVALID SCORE';
  }
  let ones = score % 10;
  let plusAndMinus = '';
  let grade = '';

  if (ones >= 0 && ones <= 2) {
    plusAndMinus = '-';
  }
  else if (ones >= 8 && ones <= 9) {
    plusAndMinus = '+';
  }
  if (score === 100) {
    return 'A+'
  }
  else if (score >= 90) {
    grade = 'A';
  }
  else if (score >= 80) {
    grade = 'B';
  }
  else if (score >= 70) {
    grade = 'C';
  }
  else if (score >= 60) {
    grade = 'D';
  }
  else {
    return 'F';
  }
  return grade + plusAndMinus;

์ฒ˜์Œ ์ ‘ํ–ˆ์„ ๋•Œ๋Š” ์ƒ๋‹นํžˆ ์–ด๋ ค์› ์—ˆ๋˜ ๋ฌธ์ œ!!:thumbsup:
๊ณ„์† ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋‹ˆโ€ฆ ์ด์   ๊ธฐ๊ณ„์ ์œผ๋กœ ํ‘ธ๋Š” ๊ฒฝ์ง€์— ์˜ค๋ฅด๊ฒŒ ๋˜์—ˆ๋‹ค..

๊ทธ๋ž˜๋„ ๊ทธ๋งŒํผ ์‹ค๋ ฅ์ด ๋Š˜์—ˆ๋‹ค๋Š” ๋œป์ด๋‹ˆ ๋ฟŒ๋“ฏํ•˜๋‹ค :)




3. ๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ

๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ ๊ธฐ์ดˆ :

1. ๋ฌธ์ž์—ด ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ ์ •๋ฆฌ!

//String()
let num = 123;
let str = String(num);

console.log(str) // '123';
//indexOf()
let str = 'hello world';
let findIndex = str.indexOf('w');  // ์ฐพ๊ณ  ์‹ถ์€ ๋ฌธ์ž๋ฅผ ๋„ฃ๋Š”๋‹ค.

console.log(findIndex) // 6;
//replace()
let str = 'hello world';
let replaceStr = str.replace('hello', 'hi'); // ๋ฌธ์ž๋ฅผ ๋ฐ”๊พผ๋‹ค.

console.log(replaceStr) // 'hi world';
//substring(), substr()
let str = 'hello world';
let sliceStr1 = str.substr(0, 5);
let sliceStr2 = str.substr(6);

console.log(sliceStr1); // hello;
console.log(sliceStr2); // world;
//split()
let str = 'hello world';
let splitStr1 = str.split('');  // ๊ด„ํ˜ธ์•ˆ์—๋Š” ์ชผ๊ฐœ๋Š” ๊ธฐ์ค€์„ ๋„ฃ์–ด์ค€๋‹ค.
let splitStr2 = str.split(' '); 

console.log(splitStr1); //["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"];
console.log(splitStr2); //["hello", "world"]

//๋‹จ, split์€ ๋ฐฐ์—ด๋กœ ๋ณ€ํ•œ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์ž!
//concat()
let str1 = 'hello';
let str2 = 'world';
let concatStr = str1.concat(str2); // 1๊ณผ 2๋ฅผ ํ•ฉ์นจ.

console.log(concatStr) // 'helloworld'
//trim()
let str = '  hello world  ';
let result = str.trim();  

console.log(result); // 'hello world'

// ์–‘ ์ชฝ ๋์˜ ๊ณต๋ฐฑ๋งŒ ์žก์•„์ฃผ๋‹ˆ ๋ช…์‹ฌํ•˜์ž!

Advanced Challanges

  • ๋„์–ด์“ฐ๊ธฐ (โ€œ โ€œ) ๋กœ ๋ฌธ์ž์—ด์„ ๊ตฌ๋ถ„ํ•˜์—ฌ, ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. str.split(โ€œ โ€œ).join(โ€œ โ€œ)
let str = 'hello world';
let arr = str.split(' '); // ['hello', 'world']

let joinArr = arr.join(' '); // 'hello world'  ๋‹ค์‹œ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜

let result = str.split(' ').join(' ');  // ๋ฉ”์„œ๋“œ ์ฒด์ด๋‹

console.log(result) // 'hello world'




4. parseFloat ๊ณผ parseInt

parseFloat, parseInt ์ •๋ฆฌ :

1. parseFloat

  • ์ˆ˜๋กœ ์‹œ์ž‘ํ•  ๋•Œ ๊ทธ ์ˆ˜๋ฅผ ์‹ค์ˆ˜๋กœ ๋ฐ”๊พผ๋‹ค.
  • ๋„์–ด์“ฐ๊ธฐ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ฒซ๋ฒˆ์งธ ์ˆ˜๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค.
  • ๊ณต๋ฐฑ์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ๊ทธ ๊ณต๋ฐฑ์€ ๋ฌด์‹œํ•œ๋‹ค.
  • ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด NaN์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์ฒซ๊ธ€์ž ์ดํ›„์— ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์ด ์˜ค๋Š” ๊ฒฝ์šฐ, ๊ทธ ์ดํ›„ ๊ฐ’๋“ค์€ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
console.log(parseFloat('12.34'));         // 12.34

console.log(parseFloat('12.34 56.78'));  // 12.34

console.log(parseFloat(' 12.34'));       // 12.34

console.log(parseFloat('A 12.34'));     // NaN

console.log(parseFloat('12.34abcd55')); // 12.34
// ์ด ๊ฒฝ์šฐ 55๋„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 'abcd' ๋’ค์— ์žˆ์œผ๋ฏ€๋กœ ๋ฌด์‹œ๋œ๋‹ค.

2. parseInt

  • 10์ง„์ˆ˜ ์ฒ˜๋ฆฌ๋Š” parseFloat ๊ณผ ๋™์ผํ•˜๋‹ค.
  • 2์ง„๋ฒ•๊ณผ 16์ง„๋ฒ• ๋“ฑ ๋‹ค๋ฅธ ์ฒ˜๋ฆฌ๊ฐ€ ์žˆ๋‹ค.
//parseInt(string, radix)

/* radix = 
- optional
- string ๋ฌธ์ž์—ด์„ ์ฝ์„ ์ง„๋ฒ•(์ˆ˜์˜ ์ง„๋ฒ• ์ฒด๊ณ„์˜ ์ง„๋ฒ•)
- 2~36์˜ ์ˆ˜
*/

console.log(parseInt('10', 2)); // 2 
// 10์„ 2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 2๊ฐ€ ๋‚˜์˜จ๋‹ค.

console.log(parseInt("2", 2)); // NaN
// 2์ง„๋ฒ•์—์„œ๋Š” 2๋ผ๋Š” ์ˆซ์ž๊ฐ€ ์—†์œผ๋ฏ€๋กœ NaN์„ ๋ฆฌํ„ด.

console.log(parseInt("0xF")); // 15
// ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ ๋ฌธ์ž์—ด์ด '0x' ๋˜๋Š” '0X'๋กœ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด
// ์ž๋™์œผ๋กœ ๋ฌธ์ž์—ด์„ 16์ง„์ˆ˜๋กœ ์ฝ์–ด์„œ, 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ๊ฐ’์„ ๋ฆฌํ„ด.

console.log(parseInt("0XF")); // 15

console.log(parseInt("0XFkk")); // 15

โ€ป parseInt() ์‚ฌ์šฉ ์‹œ ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„,
์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ง„๋ฒ•์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ, ํŠน์ • ๊ฐ’์— ๋”ฐ๋ฅธ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด
๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ radix ๊ฐ’์„ ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.




5. NaN์˜ ์ดํ•ด

NaN ์ •๋ฆฌ :

1. ์˜ค๋Š˜ ๋ฐฐ์šด NaN์— ๋Œ€ํ•œ ๊ฐœ๋…!

mdn : ์ „์—ญ NaN ์†์„ฑ์€ Not-A-Number(์ˆซ์ž๊ฐ€ ์•„๋‹˜)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  • NaN ํŒ๋ณ„

NaN์€ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐ’๊ณผ ๋น„๊ต(==, !=, ===, !==)ํ–ˆ์„ ๋•Œ ๊ฐ™์ง€ ์•Š์œผ๋ฉฐ, ๋‹ค๋ฅธ NaN๊ณผ๋„ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

NaN์˜ ํŒ๋ณ„์€ Number.isNaN() ๋˜๋Š” isNaN()์„ ์‚ฌ์šฉํ•˜๋ฉด ์ œ์ผ ๋ถ„๋ช…ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด, ์˜ค๋กœ์ง€ NaN๋งŒ์ด ์ž๊ธฐ์ž์‹ ๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ ๊ฐ™์ง€ ์•Š์Œ์„ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

NaN === NaN;        // false

Number.NaN === NaN; // false

isNaN(NaN);         // true

isNaN(Number.NaN);  // true

๋งˆ์ง€๋ง‰์œผ๋กœ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ์‚ฌ์ง„โ€ฆ!

๐Ÿ‘Š ๋‚ด์ผ์˜ TIW(today I Will)

๋ฐ˜๋ณต๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ-์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ