TIL 40 | JavaScript Repl.it Assignment 02

Saemsol Yooยท2021๋…„ 1์›” 16์ผ
1

javascript

๋ชฉ๋ก ๋ณด๊ธฐ
24/25
post-thumbnail

15. Array

keyword : array / index / index๋Š” 0๋ถ€ํ„ฐ

Assignment1
getElement ํ•จ์ˆ˜์•ˆ์— arr ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค.
arr ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด์„ ํ• ๋‹นํ–ˆ๊ณ ์š”, ๋ฐฐ์—ด์—๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์š”์†Œ๊ฐ€ ๋“ค์–ด์žˆ๋„ค์š”!
๋ฐฐ์—ด์ด ๋‹ด๊ธด arr ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜์—ฌ getElement ํ•จ์ˆ˜๊ฐ€ "array" ๋ผ๋Š” ๋ฌธ์ž์—ด์„ return ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์„ธ์š”.


Assignment2
addFirstAndLast ํ•จ์ˆ˜ ์•ˆ์— ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
addFirstAndLast ํ•จ์ˆ˜์— ์ฃผ์–ด์ง„ ์ธ์žย myArray๋Š” ์ˆซ์ž ๊ฐ’์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ array ์ž…๋‹ˆ๋‹ค.
addFirstAndLast ํ•จ์ˆ˜์— ์ฃผ์–ด์ง„ ์ธ์žย myArrayย ์˜ ์ฒซ๋ฒˆ์งธ element์™€ ๋งˆ์ง€๋ง‰ element์˜ ๊ฐ’์„ ๋”ํ•œ ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”.
๋งŒ์ผย myArray์— ํ•œ ๊ฐœ์˜ ์š”์†Œ๋งŒ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์š”์†Œ์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•ด ์ฃผ์‹œ๊ณ  ์š”์†Œ๊ฐ€ ์—†๋Š” ๋น„์–ด์žˆ๋Š” array๋ผ๋ฉด 0์„ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”.


๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ
assignment 1 (Model Solution๊ณผ ๋™์ผ) โœ…

function getElement() {
  let arr = [3, [4, ["array", 9], 2+3], [0]]; 
	
	//arr ๋ฐฐ์—ด์•ˆ์— ๋“ค์–ด์žˆ๋Š” "array"๋ฌธ์ž์—ด์„ returnํ•˜๋Š”๊ฒƒ์„ ์•„๋ž˜์—์„œ ๊ตฌํ˜„ํ•˜์„ธ์š”.
	return arr[1][1][0];  //arr์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค์—์„œ, ๋‹ค์‹œ ๋˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค์—์„œ, 0๋ฒˆ์งธ ์ธ๋ฑ์Šค!
}

assignment 2

function addFirstAndLast(myArray) {
  const length = myArray.length;
  
  if(length === 0) { //length๊ฐ€ 0์ด๋ฉด ๋น„์–ด์žˆ๋Š” ๋ฐฐ์—ด์ด๋‹ˆ๊นŒ 0์„ ๋ฆฌํ„ด
    return 0;
  } else if (length === 1) { //์š”์†Œ๊ฐ€ ํ•œ๊ฐœ๋ผ๋ฉด ํ•ด๋‹น ๊ฐ’ ๋ฆฌํ„ด!
    return myArray[0];
  } else {   //๊ทธ๋ฐ–์— ๋‚˜๋จธ์ง€ ๋ชจ๋“  ๊ฒฝ์šฐ๋Š” 0๋ฒˆ์ธ๋ฑ์Šค์™€ ์ œ์ผ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ๋”ํ•ด์ค€๋‹ค!
    return myArray[0] + myArray[length-1];
  }
}

Model Solution
Assignment 2

  • ๋‚ด ์ฝ”๋“œ์™€์˜ ์ฐจ์ด์ 
  • ๋น„๊ตํ•˜๋Š” ์กฐ๊ฑด๋“ค์˜ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅด๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜์— ๋‹ด์•„ return ํ–ˆ๋‹ค.
function addFirstAndLast(myArray) {
  var result;
  
  if (myArray.length > 1) {
    result = myArray[0] + myArray[myArray.length - 1];
  } else if (myArray.length === 1) {
    result = myArray[0];
  } else {
    result = 0;
  }
  
  return result;
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




16. for ๋ฌธ ๐Ÿ”ฅ

์ฒซ๋ฒˆ์งธ ๋ฐฐ์—ด์š”์†Œ๋ฅผ ๋‹ด์•„๋†“๊ณ  ๋น„๊ตํ•˜๋ฉด์„œ ๋” ์ž‘์€ ๊ฐ’์„ ์žฌํ• ๋‹น ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•˜๋Š”๋ฐ๊นŒ์ง€ ์กฐ๊ธˆ ์‹œ๊ฐ„์ด ํ•„์š”ํ–ˆ๋‹ค.

keyword : for (let i = 0; i < array.length; i++)

findSmallestElement ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด ์ฃผ์„ธ์š”.
findSmallestElement ์˜ย arrย ์ธ์ž๋Š” ์ˆซ์ž ๊ฐ’์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ array ์ž…๋‹ˆ๋‹ค.
array ์˜ ๊ฐ’๋“ค ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”.
๋งŒ์ผ array๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด 0์„ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”.


์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ array์ด ์ธ์ž(input)์œผ๋กœ ๋“ค์–ด์™”๋‹ค๋ฉด:

`[20, 200, 23, 1, 3, 9]`

1์ด ๋ฆฌํ„ด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ
ver.1

function findSmallestElement(arr) {
    let min = arr[0];
    
    if (arr.length === 0) {
      return 0
    } else { //์–ด์ฐจํ”ผ ๋น„์–ด์žˆ๋Š” ๋ฐฐ์—ด์ด๋ฉด 0์„ ๋ฆฌํ„ดํ•˜๊ณ  ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋‹ˆ๊นŒ else๋ฅผ ๋‹ค์‹œ ๋นผ์ฃผ๋Š”๊ฒŒ ์ข‹๊ฒŸ๋‹ค!
      for (let i = 0 ; i < arr.length; i++) {
        if (arr[i] < min) {
          min= arr[i]
        }
      }
    }
    
    return min
}

ver. 2 โ†’ ์šฐ์„  ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์œผ๋ฉด ๋ฐ”๋กœ 0์„ returnํ•˜๊ณ  ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค๋ฉด ๋˜๋‹ˆ๊นŒ ๋จผ์ € if ๋ฌธ์„ ์ ๊ณ , ๋’ค์— ๋ฅผ ์ฒ˜์Œ์—” else ๋กœ ์ฒ˜๋ฆฌํ•ด์„œ ๊ทธ์•ˆ์— for ๊ทธ์•ˆ์— ๋‹ค์‹œ if ๋ฌธ์ด ๋“ค์–ด๊ฐ€ ์ข€ ๋ณต์žกํ•ด๋ณด์—ฌ์„œ .. for๋ฌธ์„ ๋”ฐ๋กœ ๋‹ค์‹œ ํ•ด์คฌ๋‹ค. ์™œ๋ƒ๊ตฌ??? return์„ ํ•œ๋‹ค๋Š”๊ฒŒ ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒ์‹œ์ผœ์„œ ๋’ค ์ฝ”๋“œ๋“ค์ด ์‹คํ–‰์•ˆ๋œ๋‹ค๋Š”๊ฑธ ์ƒ๊ฐํ•˜๋ฉฐ ์ž‘์„ฑํ•˜๋Š” ๊ฑธ ์ด์ œ ์™„์ „ ์•Œ์•˜๊ฑฐ๋“ ์š”,, ๐Ÿ˜

function findSmallestElement(arr) {
  let min = arr[0];  //solution์—์„œ๋Š” ์ด๊ฒŒ ์•„๋ž˜์ชฝ์— ์žˆ๋Š”๋ฐ, ์ฒซ๋ฒˆ์งธ if๋ฌธ์—์„œ๋Š” ์ด ๋ณ€์ˆ˜๊ฐ€ ํ•„์š” ์—†์œผ๋‹ˆ๊นŒ for๋ฌธ ์ „์— ์„ ์–ธํ•˜๋Š”๊ฒŒ ์ฝ”๋“œ๋ฅผ ํ๋ฆ„๋Œ€๋กœ ๋ณด๊ธฐ ์ข‹๊ฒ ๋‹ค.
 
  if (arr.length === 0) {
    return 0
  }
  for (let i = 0; i < arr.length ; i++) {
    if (arr[i] < min ){
      min = arr[i]
    }
  }
  
return min;
}

Model Solution

  • ๋‚ด ์ฝ”๋“œ์™€์˜ ์ฐจ์ด์ 
  • ์ตœ์†Œ๊ฐ’ ๋‹ด์„ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ์œ„์น˜ ๋นผ๊ณ  ๋‚ด ์ฝ”๋“œ๋ž‘ ๋˜‘๊ฐ™๋‹ค!! ๐Ÿ‘๐Ÿปโœจ
function findSmallestElement(arr) {
  // your code here
  if (arr.length === 0) {
    return 0;
  }
  
  let result = arr[0];
  
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < result) {
      result = arr[i];
    }
  }
  
  return result ;
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




17. ๋ฐฐ์—ด ์กฐ์ž‘ํ•˜๊ธฐ ๐ŸŒช

์ฃผ์˜!! for loop์—์„œ i๊ฐ€ ์ค„์–ด๋“ค๊ณ  ์žˆ๋Š”๊ฑด์ง€, ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ๋Š”๊ฑด์ง€๋ฅผ ์ž˜ ์ƒ๊ฐํ•˜๊ธฐ!

keyword : push / unshift / pop / ๋ฐฐ์—ด์— ์š”์†Œ ์ถ”๊ฐ€ / ๋งŒ์•ฝ์— ๊ฑด๋„ˆ๋›ฐ๊ณ  ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ๊ทธ ์‚ฌ์ด์— ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค๋“ค์€ undefined ์ถœ๋ ฅ๋œ๋‹ค

divideArrayInHalf ํ•จ์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”.
divideArrayInHalf ํ•จ์ˆ˜์˜ ์ธ์ž์ธ array๋Š” ์ˆซ์ž ๊ฐ’์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ •ํ™•ํžˆ ์ด 5๊ฐœ์˜ ์š”์†Œ(element)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
array์˜ ์š”์†Œ๋“ค ์ค‘ 10๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์€ ๊ฐ’์˜ element๋“ค์€ result์˜ ๋งจ ์•ž์œผ๋กœ,
10๋ณด๋‹ค ํฐ ๊ฐ’์˜ ์š”์†Œ๋“ค์€ result์˜ ๋งจ ๋’ค๋กœ ์žฌ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”.

  • ์ค‘์š”์‚ฌํ•ญ
    ์ด๋•Œ, ์ˆœ์„œ๋Š” array์˜ ๋งจ ๋’ค์˜ ์š”์†Œ ๋ถ€ํ„ฐ ๋งจ ์•ž์˜ ์š”์†Œ๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ €์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, ์ธ์ž array ๊ฐ’์ด ๋‹ค์Œ๊ณผ ๊ฐ™์„๋•Œ
[1, 20, 10, 5, 100]

result ๋ฐฐ์—ด์ด ๋งŒ๋“ค์–ด ์ง€๋Š” ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ,

[100]
[5, 100]
[10, 5, 100]
[10, 5, 100, 20]
[1, 10, 5, 100, 20]

์•„๋ž˜์™€ ๊ฐ™์€ result๊ฐ€ ๋ฆฌํ„ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[1, 10, 5, 100, 20]

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ
ver.1
โ†’ index๊ฐ€ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ ์  ์ž‘์•„์ง€๊ฒŒ ํ•˜๋Š”๊ฑด ์ฒ˜์Œํ•ด๋ด์„œ, i >= 0 ์ด ์กฐ๊ฑด์‹ ๋ถ€๋ถ„์„ i = 0 ํ˜น์€ i < 0 ๋“ฑ๋“ฑ ์–ด๋–ป๊ฒŒ ํ•ด์ค˜์•ผํ•˜๋Š”์ง€ ํ—ท๊ฐˆ๋ ธ๋‹ค. ๊ทธ๋ž˜์„œ fail์ด ๋‚˜์˜ค๋‹ค๊ฐ€ ๊ฒฐ๊ตญ ํ•ด๊ฒฐํ–ˆ๋‹ค!

function divideArrayInHalf(array) {
    let result = [];
    for (let i = 4 ; i >= 0 ; i--) {
      console.log(i);
        if (array[i] <= 10 ) {
            result.unshift(array[i])
        } else {
            result.push(array[i]);
        }
    }
    return result;
}

ver. 2 โ†’ ์ฒ˜์Œ์— ์ž‘์„ฑํ•  ๋•Œ๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ์–ธ์ œ๋‚˜ 5๊ฐœ๋งŒ์ด๋ผ๊ณ  ํ•ด์„œ ๋ฐ”๋กœ i=4 ๋กœ ์‹œ์ž‘ํ•ด์คฌ๋Š”๋ฐ, ์–ด๋–ค ๋ฐฐ์—ด์ด ๋“ค์–ด์™€๋„ ์ •์ƒ์ ์ธ ์‹คํ–‰์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.

function divideArrayInHalf(arr) {
  let result = [];
  
  for (i = arr.length-1 ; i >= 0 ; i--){
    if(arr[i] <= 10){
      result.unshift(arr[i]);
    } else {
      result.push(arr[i]);
    }
  }
  return result;
}

Model Solution

  • solution์—์„œ๋Š” for loop๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  if else ์กฐ๊ฑด๋ฌธ์œผ๋กœ ํ’€์—ˆ๋‹ค.
  • ์•„์ง ๋ฌธ์ œ ํ‘ธ๋Š” ๋‹จ๊ณ„๊ฐ€ if else ๋‹จ๊ณ„์—ฌ์„œ, for loop ๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ์‹œ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

โ†’ ๊ณผ์ • : array.pop() ํ•˜๋ฉด ๋ฐฐ์—ด ๋’ค์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์‚ญ์ œ๋˜๋Š”๋ฐ, ์ด๋•Œ ์‚ญ์ œ๋œ ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ฆฌํ„ด๋œ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ด์ฃผ๊ณ  ๊ทธ ๊ฐ’์„ ์กฐ๊ฑด์—๋”ฐ๋ผ unshift ํ•ด์ฃผ๊ฑฐ๋‚˜ push ํ•ด์ค€๋‹ค. ๋‹ค๋งŒ ์ง€๊ธˆ ์—ฌ๊ธฐ์„œ๋Š” for loop๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ•˜๋ ค๊ณ  ๊ทธ๋ƒฅ 5๊ฐœ์˜ ์š”์†Œ ํ•œ์ •์ด๋‹ˆ๊นŒ! ๊ทธ๋ƒฅ 5๋ฒˆ ๋ฐ˜๋ณตํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด์คฌ๋‹ค!

function divideArrayInHalf(array) {
  // for loop ์ด๋‚˜ while loop ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ํŽธ๋ฆฌํ•˜์ง€๋งŒ 
  // ์•„์ง ์•ˆ๋ฐฐ์› ์Œ์œผ๋กœ for loop ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ 
  // ๊ตฌํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Œ.
  let result = [];

  let element = array.pop(); //array๋ฐฐ์—ด์—์„œ ๋’ค๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋ฝ‘์•„์„œ ๋ฆฌํ„ด๋œ ๊ฑธ ํ• ๋‹น!
  if (element <= 10) {
    result.unshift(element);
  } else {
    result.push(element);
  }
  
  element = array.pop();
  if (element <= 10) {
    result.unshift(element);
  } else {
    result.push(element);
  }
  
  element = array.pop();
  if (element <= 10) {
    result.unshift(element);
  } else {
    result.push(element);
  }
  
  element = array.pop();
  if (element <= 10) {
    result.unshift(element);
  } else {
    result.push(element);
  }
  
  element = array.pop();
  if (element <= 10) {
    result.unshift(element);
  } else {
    result.push(element);
  }
  //๋ฌด์กฐ๊ฑด ๋ฐฐ์—ด์€ 5๊ฐœ์˜ ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค๊ณ  ํ–ˆ์œผ๋‹ˆ๊นŒ, for loop ๋Œ€์‹  ๊ทธ๋ƒฅ 5๋ฒˆ ๋ฐ˜๋ณตํ•œ๋‹ค!

  return result;
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




18. ๋ฐ์ดํ„ฐ ํƒ€์ž…

keyword : undefined null boolean (true/false) number string object typeof

Assignment ์—†๋‹ค ๐ŸŽ




19-1. String ๐Ÿ”ฅ๐Ÿ’ญ

๊ผญ ๋‹ค์‹œ ํ’€์–ด๋ณด๊ธฐ!!

keyword : string / .toUpperCase() / .toLowerCase() / string.length / ์ˆซ์ž ์•ž์ž๋ฆฌ๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ˆซ์ž๋ฅผ ํ• ๋‹นํ•˜๋ฉด, ์ปดํ“จํ„ฐ๋Š” 0์„ ๋นผ๊ณ  ํ• ๋‹นํ•œ๋‹ค. ๊ทธ๋ž˜์„œ 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆซ์ž๋Š” string์œผ๋กœ ๋ฐ”๊ฟ”์„œ ํ• ๋‹นํ•ด์•ผ 0์ด ์œ ์ง€๋œ๋‹ค
indexOf() โ† ํŠน์ • ๋ฌธ์ž์—ด์ด ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธ .. ํ™œ์šฉ) ์ฑ„ํŒ…์ฐฝ ์š•์„ค ์ฐจ๋‹จ
slice(์ž˜๋ฆด ์‹œ์ž‘์œ„์น˜, ์ž˜๋ฆด ๋์œ„์น˜) โ† string์„ ์ž˜๋ผ์ฃผ๋Š” ํ•จ์ˆ˜ *๋์€ ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค

sliceCityFromAddress ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด ์ฃผ์„ธ์š”.

  • sliceCityFromAddress ํ•จ์ˆ˜๋Š” address ์ธ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • address ์ธ์ž์—๋Š” ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” string์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ฃผ์–ด์ง„ ์ฃผ์†Œ๊ฐ€ ์–ด๋Š ๋„์‹œ์ธ์ง€๋ฅผ ์ฐพ์•„๋‚ด์„œ, ํ•ด๋‹น ์ฃผ์†Œ์—์„œ ๋„์‹œ ๋ถ€๋ถ„๋งŒ ์‚ญ์ œํ•œ ์ƒˆ๋กœ์šด ์ฃผ์†Œ๋ฅผ ๋ฆฌํ„ดํ•ด ์ฃผ์„ธ์š”.
  • ์ฃผ์†Œ๋Š” ๋ฌด์กฐ๊ฑด "์‹œ" ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "์„œ์šธ์‹œ".
  • "๋„" ์™€ "์‹œ" ๋Š” ์ฃผ์†Œ์— ํ•œ๋ฒˆ ๋ฐ–์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


    ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์†Œ๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค๋ฉด;
"๊ฒฝ๊ธฐ๋„ ์„ฑ๋‚จ์‹œ ๋ถ„๋‹น๊ตฌ ์ค‘์•™๊ณต์›๋กœ 53"

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ’์ด ๋ฆฌํ„ด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

"๊ฒฝ๊ธฐ๋„ ๋ถ„๋‹น๊ตฌ ์ค‘์•™๊ณต์›๋กœ 53"

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ
ver.1
โ†’ index๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋‹ˆ๊นŒ length ๊ฐ’์— +1 ์•ˆํ•ด์ค˜๋„ ๋œ๋‹ค!! (lastChar ๋ถ€๋ถ„) ๐Ÿšจ

function sliceCityFromAddress(address) {

  let givenAddress = address;
  let nameDo = address.indexOf("๋„");
  let nameCity = address.indexOf("์‹œ");
  let lastChar = address.length+1;
  
  if  (nameDo === -1) {
     givenAddress = address.slice(0, nameDo+1) + address.slice(nameCity+2, lastChar);
  } else if(nameCity !== -1) {
     givenAddress = address.slice(0, nameDo+1) + address.slice(nameCity+1, lastChar);
  }
 
  return givenAddress;
}

ver. 2 โ†’ ์ด๋ฒˆ์—๋Š” ํ• ๋‹น๋  ๊ฐ’์„ ๊ณ ๋ คํ•ด์„œ ๋ณ€์ˆ˜๋ช…์„ ์ง€์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  slice ๋ฅผ ์ด์šฉํ•ด ์ฒ˜๋ฆฌํ•˜๋Š”๋ถ€๋ถ„๋„ ๋ฌธ์ œ์กฐ๊ฑด์˜ ํ๋ฆ„๋Œ€๋กœ ์ƒ๊ฐํ•ด์„œ ์ˆ˜์ •ํ–ˆ๋‹ค.

function sliceCityFromAddress(address) {
  
  let givenAddress = address;
  let indexOfSi = address.indexOf("์‹œ");
  let indexOfDo = address.indexOf("๋„");
  let afterLastChar = address.length + 1; //์–ด์ฐจํ”ผ length๋Š” ์ธ๋ฑ์Šค๋ณด๋‹ค ํ•˜๋‚˜ ๋” ๊ธฐ๋‹ˆ๊นŒ length๋กœ ํ•ด์ค˜๋„ index ๋งˆ์ง€๋ง‰๊ฐ’ ํฌํ•จ๋œ๋‹ค! ๐Ÿ™‚
  
  // console.log(address.slice(0,3)); return๊ฐ’ ์•Œ์•„๋ณด๋ ค๊ณ !
  
  if (indexOfDo === -1) {  //๋งŒ์•ฝ ๋„๊ฐ€ ์—†์œผ๋ฉด (=์„œ์šธ์‹œ) .. ์‹œ ๋‹ค์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€!)
    givenAddress = address.slice(indexOfSi + 2, afterLastChar);
  } else { //๋งŒ์•ฝ ๋„๊ฐ€ ์žˆ์œผ๋ฉด, ๋งจ์•ž๋ถ€ํ„ฐ ๋„๊นŒ์ง€ & ์‹œ ๋’ค๋ถ€ํ„ฐ ๋๊นŒ์ง€ (๋„์–ด์“ฐ๊ธฐ ์ƒ๊ฐํ•˜๊ธฐ!)
    givenAddress = address.slice(0,indexOfDo+1) +  address.slice(indexOfSi+1 , afterLastChar);
  }
  
  return givenAddress;
}

Model Solution

  • ๋‚ด ์ฝ”๋“œ์™€์˜ ์ฐจ์ด์ ๊ณผ ๋Š๋‚€์  ๐Ÿ’ญ
  • ๋‘๋ฒˆ์งธ๋กœ ํ’€๋ฉด์„œ ๋ณ€์ˆ˜๋ช…์„ ์ƒ๊ฐํ•˜๋ฉด์„œ ์ •ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๊ทธ๋ƒฅ index๊ฐ€ ๋“ค์–ด์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์‹œ, ๋„ ๊ฐ€ ๋๋‚˜๋Š” ๋ถ€๋ถ„์ด๋‹ˆ๊นŒ ์กฐ๊ธˆ ์ง๊ด€์ ์ธ ์ด๋ฆ„์œผ๋กœ ํ•ด์ค„ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ชปํ–ˆ๋‹ค. ๋ณ€์ˆ˜๋ช…์ด ๋” ํ™•์‹คํ•ด์ ธ์„œ ์ฝ”๋“œ๋ฅผ ์ฝ์œผ๋ฉด์„œ๋„ city_end ์—์„œ 2๊ฐœ ์ธ๋ฑ์Šค ๋’ค,, ์ด๋ ‡๊ฒŒ ์ž˜ ํ•ด์„์ด ๋˜์–ด์„œ ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์•„๋ณด์ธ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋‚˜์˜ ๊ธฐ๊ณ„์ ์ธ length+1 ..ใ…Žใ…Ž slice ๋Š” ๋งˆ์ง€๋ง‰์€ ํฌํ•จ์„ ์‹œ์ผœ์ฃผ์ง€ ์•Š๋Š”๋‹ค๊ณ ํ•ด์„œ ๊ทธ๋Ÿผ ํ•˜๋‚˜๋ฅผ ๋” ๋Š˜๋ ค์•ผ๊ฒ ๋‹ค๊ณ  ํ•ด์„œ 1์„ ๋”ํ•ด์คฌ๋Š”๋ฐ,, ์‚ฌ์‹ค length๊ฐ€ ์›๋ž˜ index๋ณด๋‹ค 1์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆํ•ด์ค˜๋„ ๋˜๋Š”๊ฑฐ์˜€๋‹ค. ์ƒ๊ฐํ•˜๊ณ  ํ’€์ž..๐Ÿ˜‡
function sliceCityFromAddress(address) {
  // your code here
  var province_end = address.indexOf("๋„");
  var city_end     = address.indexOf("์‹œ");
  
  console.log("province end " + province_end)
  console.log("city end " + city_end)
  
  // ์„œ์šธ์˜ ๊ฒฝ์šฐ ๋„๊ฐ€ ์—†์ด ์„œ์šธํŠน๋ณ„์‹œ ๋ถ€ํ„ฐ ์‹œ์ž‘
  if (province_end == -1) {
    return address.slice(city_end + 2, address.length);
  } else {
    return address.slice(0, province_end + 1) + address.slice(city_end + 1, address.length);
  }
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




19-2. String โ†โ†’ Number ๋ณ€ํ™˜

keyword : string โ†” number ๋ณ€ํ™˜ / NaN (Not A Number)
1234 + "" โ† number to String / string - 0 โ† string to Number

์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๊ตญ๋ฏผ์—ฐ๊ธˆ์„ ๋งŒ 65์„ธ ๋ถ€ํ„ฐ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
nationalPensionRemainingYearCount ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”.
nationalPensionRemainingYearCount ๋Š” age_string ์ด๋ผ๋Š” input์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
age_string ์€ ๋‚˜์ด ๊ฐ’์ธ๋ฐ stringํ˜• ๊ฐ’์œผ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ฃผ์–ด์ง„ ๋‚˜์ด๋ถ€ํ„ฐ ๋ช‡๋…„์ด ์ง€๋‚˜์•ผ ๊ตญ๋ฏผ์—ฐ๊ธˆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”.
๋ฆฌํ„ด ๊ฐ’์œผ๋กœ๋Š” ๋‹ค์Œ ๋ฌธ์žฅ ์ฒ˜๋Ÿผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

`"์•ž์œผ๋กœ 20๋…„ ๋‚จ์œผ์…จ์Šต๋‹ˆ๋‹ค"`


์˜ˆ๋ฅผ ๋“ค์–ด, age_string ๊ฐ’์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด:

"35"

๋ฆฌํ„ด ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"์•ž์œผ๋กœ 30๋…„ ๋‚จ์œผ์…จ์Šต๋‹ˆ๋‹ค"

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ
ver.1

function nationalPensionRemainingYearCount(age_string) {
  // Your code here
  const age_number = Number(age_string);
  const leftYears = 65 - age_number;

  return "์•ž์œผ๋กœ " + leftYears + "๋…„ ๋‚จ์œผ์…จ์Šต๋‹ˆ๋‹ค";
}

ver. 2 โ†’ number๋ฅผ string๋กœ ๋ณ€ํ™˜ํ•ด์ค„ ๋•Œ ์ด๋ฒˆ์—๋Š” ์ˆซ์ž 0์„ ๋นผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณ€์ˆ˜์„ ์–ธ์„ let ์œผ๋กœ ํ•ด์คฌ๋‹ค.

function nationalPensionRemainingYearCount(age_string) {
  let age_number = age_string-0;  //ํ˜น์€ Number(age_string) ๋„ ๊ฐ€๋Šฅ!
  let leftYears = 65 - age_number

  return "์•ž์œผ๋กœ " + leftYears + "๋…„ ๋‚จ์œผ์…จ์Šต๋‹ˆ๋‹ค";
}

Model Solution

  • ๋‚ด ์ฝ”๋“œ์™€์˜ ์ฐจ์ด์ 
  • solution์—์„œ๋Š” ์ „๋‹ฌ์ธ์ž ๋ฅผ ๋ฐ”๋กœ ์ˆซ์žํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด์„œ ๊ณ„์‚ฐํ•ด๊ฐ€์ง€๊ณ  ํ•œ๋ฒˆ์— ํ• ๋‹นํ–ˆ๋‹ค!
function nationalPensionRemainingYearCount(age_string) {
  // Your code here
  var remaining_years = 65 - Number(age_string);
  
  return "์•ž์œผ๋กœ " + remaining_years + "๋…„ ๋‚จ์œผ์…จ์Šต๋‹ˆ๋‹ค"
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




20. ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๐Ÿ”ฅ๐ŸŒช

keyword : new Date() .getFullYear() .getMonth() .getDate() .getDay() .getHours() .getMinutes()
.getTime() โ† ๋‚ ์งœ์˜ ๋ฐ€๋ฆฌ์ดˆ ํ‘œํ˜„์„ ๋ฐ˜ํ™˜ ( 1970๋…„ 1์›” 1์ผ๋กœ๋ถ€ํ„ฐ 1564563605026 ๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ์ง€๋‚ฌ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ 10๋ถ„ ๋’ค์— ๋‹ค์‹œ ์ƒˆ๋กœ new Date()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ํ˜๋ €์œผ๋‹ˆ ์œ„์˜ 1564563605026 ๋ณด๋‹ค๋Š” ํฐ ์ˆซ์ž๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ getTimeํ•จ์ˆ˜๋กœ ๋ฐ˜ํ™˜๋œ ์ˆซ์ž๋กœ ๋น„๊ต์—ฐ์‚ฐ์„ ํ†ตํ•ด ์–ธ์ œ๊ฐ€ ๋” ๊ณผ๊ฑฐ์ธ์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์ด ๋” ์ž‘์œผ๋ฉด ๊ณผ๊ฑฐ์ž…๋‹ˆ๋‹ค.

ํŠน์ • ๋‚ ์งœ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด, ํ•ด๋‹น ๋‚ ์งœ์˜ Date๋ฅผ ๋ฐ˜ํ™˜ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
โ†’ let date1 = new Date('December 17, 2019 03:24:00');
โ†’ let date2 = new Date('2019-12-17T03:24:00');
โ†’ let date3 = new Date(2019, 5, 1);


๋ฏธ๊ตญ์„ ๋น„๋กฏํ•ด ์ „์„ธ๊ณ„ ๋Œ€๋ถ€๋ถ„์˜ ๋‚˜๋ผ๋“ค์ด ์ƒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜์ด๋ฅผ ๊ณ„์‚ฐ ํ•ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด ๋ฏธ๊ตญ์€ ํƒœ์–ด๋‚˜์ž๋งˆ์ž 0์‚ด์ด๊ณ  ์ƒ์ผ์„ ์ง€๋‚˜์•ผ ๋น„๋กœ์†Œ ํ•œ ์‚ด์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ํ•œ๊ตญ์€ ํƒœ์–ด๋‚˜์ž๋งˆ์ž 1์‚ด์ด๊ณ  ์—ฐ๋„๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ํ•œ ์‚ด์”ฉ ๋จน์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๋ฏธ๊ตญ์—์„œ๋Š” 1995๋…„ 9์›” 12์ผ์— ํƒœ์–ด๋‚ฌ์œผ๋ฉด 1995๋…„ 9์›” 12์ผ์—๋Š” 0์‚ด์ด๊ณ 
1996๋…„ 9์›” 12์ผ์ด ๋˜์•ผ 1์‚ด์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ์— ๋น„ํ•ด ํ•œ๊ตญ์—์„œ๋Š” 1995๋…„ 9์›” 12์ผ์— ํƒœ์–ด๋‚˜์ž๋งˆ์ž 1์‚ด์ด๊ณ  1996๋…„ 1์›” 1์ผ์— 2์‚ด์ด ๋ฉ๋‹ˆ๋‹ค.
1์‚ด ์ฐจ์ด๋„ ํฌ๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ์šฐ๋ฆฌ๋‚˜๋ผ ๊ณ ์œ ์˜ ๋ฌธํ™”์— ๋น„๋กฏํ•œ ๊ณ„์‚ฐ๋ฒ•์ด ์•„๋‹Œ๊ฐ€ ์ถ”์ธกํ•ด ๋ด…๋‹ˆ๋‹ค. ๋ฏธ๊ตญ์ด๋‚˜ ๋‹ค๋ฅธ ๋‚˜๋ผ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋‚˜์ด ๊ณ„์‚ฐ๋ฒ•์€ ์šฐ๋ฆฌ๋‚˜๋ผ์—์„œ๋Š”ย ๋งŒ ๋‚˜์ดย ๋ผ๊ณ  ํ•˜์ฃ .

์•ž์„œ ๋งํ•œ ๋งŒ์œผ๋กœ ๊ณ„์‚ฐํ•œ ๋‚˜์ด๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์ธ getWesternAge ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด ๋ด…์‹œ๋‹ค.
์ด ํ•จ์ˆ˜๋Š” birthday ๋ผ๋Š” ์ธ์ž๋ฅผ ๋ฐ›๊ณ  ์ด birthday๋Š” Date ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. birthday๋ผ๋Š” ์ธ์ž๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ, ํ˜„์žฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋งŒ์œผ๋กœ ๊ณ„์‚ฐํ•œ ๋‚˜์ด๋ฅผ ๋ฆฌํ„ด ํ•ด์ฃผ๋„๋ก ๊ตฌํ˜„ํ•ด ๋ด…์‹œ๋‹ค. birthday๋Š” string์ด ์•„๋‹Œ Date ๊ฐ์ฒด๋ผ๋Š” ๊ฑธ ๋ช…์‹ฌํ•˜์„ธ์š” :)

์˜ˆ๋ฅผ ๋“ค์–ด, ์˜ค๋Š˜์ด 2020๋…„ 7์›” 21์ผ์ด๊ณ , birthday ๊ฐ’์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด:

1990-03-21T00:45:06.562Z
  • ๋ฆฌํ„ด ๊ฐ’์€ 30 ์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿคš๐Ÿป ๋‚˜ ํ˜ผ์ž ์ž๊พธ ํ—ท๊ฐˆ๋ฆฐ ๋ถ€๋ถ„!
โ†’ ์šฐ๋ฆฌ๋‚˜๋ผ ๋‚˜์ด๊ณ„์‚ฐ์ด ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ!!! ์˜จ์ „ํžˆ ์™ธ๊ตญ์ธ์˜ ๋‚˜์ด ์ž…์žฅ์—์„œ

  • ์ƒ์ผ์ด ์•ˆ์ง€๋‚ฌ์œผ๋ฉด ํ˜„์žฌ์—ฐ๋„ - ํƒœ์–ด๋‚œ์—ฐ๋„ - 1์‚ด
  • ์ƒ์ผ๋‚ ์ด๋ž‘, ์ƒ์ผ์ด ์ง€๋‚˜๋ฉด ์ด์ œ ํ•œ์‚ด ๋จน์–ด์„œํ˜„์žฌ์—ฐ๋„ - ํƒœ์–ด๋‚œ์—ฐ๋„
(ex- 2020๋…„์— ํƒœ์–ด๋‚˜๊ณ  ์ง€๊ธˆ 2021๋…„ ์ƒ์ผ ์•ˆ์ง€๋‚ฌ์œผ๋ฉด 0์‚ด์ด๊ณ ,์ƒ์ผ ์ง€๋‚˜๋ฉด 1์‚ด์ด ๋˜๋‹ˆ๊นŒ! 2021๋…„ - 2020๋…„ = 1 .. ๋นผ๊ธฐ 1 ํ•ด์ค˜์•ผ 0์‚ด(์ƒ์ผ์ „) ////// ๊ทธ๋Œ€๋กœ 1์‚ด์ด๋ฉด ์ƒ์ผํ›„! ์ œ๋ฐœ ํ•œ๊ตญ๋‚˜์ด์ƒ๊ฐ ๋…ธ๋…ธ ๐Ÿ˜



๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ
ver.1
โ†’ ์„ค๋ช… : ์›”+์ผ ( 0321 ์ฒ˜๋Ÿผ) ๋ณ€ํ™˜ํ–ˆ๋‹ค. ์™œ๋ƒ๋ฉด 1์›”1์ผ 11 ๋ถ€ํ„ฐ 12์›” 31์ผ 1231 ๊ณ„์† ์ปค์ง€๋‹ˆ๊นŒ!

์กฐ๊ฑด์‹ ์ˆœ์„œ๋Š”

  1. currentMonth < birthMonth = ์ƒ์ผ์ด ์•ˆ์ง€๋‚ฌ์œผ๋ฉด โ†’ ํ•œ์‚ด ๋นผ์ฃผ๊ธฐ

  2. else = ์ƒ์ผ์ธ ๋‹ฌ์ธ๋ฐ ์ƒ์ผ ์ „์ด๊ฑฐ๋‚˜, ํ›„์ด๊ฑฐ๋‚˜! (&์ƒ์ผ๋‹ฌ๋ณด๋‹ค๋„ ์ดํ›„)

    1. ์˜ค๋Š˜ ์›”์ผ(month&date)์—์„œ ์ƒ์ผ์›”์ผ ๋บ์„๋•Œ 0๋ณด๋‹ค ์ž‘์œผ๋ฉด โ†’ ์ƒ์ผ์ด ๋” ํฐ๊ฑฐ๋‹ˆ๊นŒ ๋‚˜์ค‘์ด๋‹ค!
      โ†’ ํ•œ์‚ด ๋นผ์ฃผ๊ธฐ

    2. ๊ทธ ๋ฐ˜๋Œ€๋Š” (์˜ค๋Š˜ ์›”์ผ์—์„œ ์ƒ์ผ๋บ€๊ฒŒ ๊ฐ™๊ฑฐ๋‚˜! ํฌ๋ฉด) โ†’ ์˜ค๋Š˜์›”์ผ์ด ๋” ํฌ๋‹ˆ๊นŒ ๊ฐ™์œผ๋ฉด ์ƒ์ผ ์ง€๋‚ฌ๊ฑฐ๋‚˜ ์ƒ์ผ๋‚ ์ด๋‹ค!
      โ†’ ํ•œ์‚ด ์•ˆ๋นผ์ค˜๋„ ๋œ๋‹ค!

function getWesternAge(birthday) {

const birthYear = birthday.getFullYear();
const birthMonth = birthday.getMonth()+1;
const birthDate = birthday.getDate();
const currentYear = new Date().getFullYear();
const currentMonth = new Date().getMonth()+1;
const currentDate = new Date().getDate();

const birthDay = birthMonth+""+birthDate+"";
const today = currentMonth+""+currentDate+"";
  
console.log(birthDay);
console.log(today);

if (currentMonth < birthMonth ){    //์ƒ์ผ ์•ˆ์ง€๋‚จ
  return currentYear - birthYear - 1;
} else {                            //์ƒ์ผ๋‹ฌ์ธ๋ฐ ์ƒ์ผ ์ „์ด๊ฑฐ๋‚˜, ์ƒ์ผ๋‚  ํ˜น์€ ์ƒ์ผ ์ดํ›„๋‹ฌ
    if(today - birthDay < 0) {      //์ƒ์ผ ์•ˆ์ง€๋‚จ
      return currentYear - birthYear - 1;
    } else {                        //์ƒ์ผ๋‚ ์ด๊ฑฐ๋‚˜, ์ƒ์ผ ์ดํ›„
       return currentYear - birthYear;
      }
   }
}

ver. 2
โ†’ ์„ค๋ช… : ๋จผ์ € ๋ณ€์ˆ˜ age ๋ฅผ ๋งŒ๋“ค์–ด ๋‘๊ณ , ๊ฐ๊ฐ ์กฐ๊ฑด์—์„œ age ์—๋‹ค๊ฐ€ ํ•ด๋‹น ๋‚˜์ด๋ฅผ ํ• ๋‹น!

์กฐ๊ฑด์‹ ์ˆœ์„œ๋Š”

  1. ์ƒ์ผ์ธ month๊ฐ€ ์ง€๋‚ฌ์œผ๋ฉด ๋ฌด์กฐ๊ฑด ์ƒ์ผ์ด ์ง€๋‚œ๊ฑฐ๋‹ˆ! โ†’ afterBirthday ๋‚˜์ด ํ• ๋‹น
  2. ์ƒ์ผ์ธ month๊ฐ€ ์•„์ง ์•ˆ์ง€๋‚ฌ์œผ๋ฉด ๋ฌด์กฐ๊ฑด ์ƒ์ผ์ด ์•ˆ์ง€๋‚ฌ์œผ๋‹ˆ๊นŒ โ†’ beforeBirthday ๋‚˜์ด ํ• ๋‹น
  3. ํ˜„์žฌ๊ฐ€ ์ƒ์ผ์ธ month ๋ผ๋ฉด
    1. ์ƒ์ผ day ๊ฐ€ ์•ˆ์ง€๋‚ฌ์œผ๋ฉด, ์ƒ์ผ ์•ˆ์ง€๋‚ฌ์œผ๋‹ˆ โ†’ beforeBirthday ๋‚˜์ด ํ• ๋‹น
    2. ์ƒ์ผ day ๋‹น์ผ์ด๊ฑฐ๋‚˜ ์ง€๋‚ฌ์œผ๋ฉด, ์ƒ์ผ ์ง€๋‚œ๊ฑฐ๋‹ˆ๊นŒ โ†’ afterBirthday ๋‚˜์ด ํ• ๋‹น
function getWesternAge(birthday) {
   let age;
   const birthYear = birthday.getFullYear();
   const birthMonth = birthday.getMonth()+1;
   const birthDate = birthday.getDate();
   const currentYear = new Date().getFullYear();
   const currentMonth = new Date().getMonth()+1;
   const currentDate = new Date().getDate();
  
    const beforeBirthday = currentYear - birthYear -1;
    const afterBirthday = currentYear - birthYear;
  

   if(birthMonth < currentMonth){  //์ƒ์ผ์ด ์ง€๋‚ฌ๋‹ค
     age = afterBirthday;
   } else if (birthMonth > currentMonth) {  //์ƒ์ผ์ด ์•ˆ์ง€๋‚ฌ๋‹ค
     age = beforeBirthday;
   } else {                            //์ƒ์ผ์ธ ๋‹ฌ์—๋Š”
     if (birthDate < currentDate) {    //๋‚ ์งœ๊ฐ€ ์ง€๋‚ฌ๋‹ค
       age = afterBirthday;
     } else {                          //๋‚ ์งœ๊ฐ€ ์•ˆ์ง€๋‚ฌ๋‹ค
        age = beforeBirthday;
     }
   }

  return age;
}

Model Solution

  • ๋‚ด ์ฝ”๋“œ์™€์˜ ์ฐจ์ด์  - ์™„์ „ ๊ฐ„๋‹จํ•˜๋‹ค,, ๐Ÿ˜ฑ
  • solution์—์„œ๋Š”
    โ†’ ์ƒ์ผ ์•ˆ์ง€๋‚ฌ์„๋•Œ ํ•œ์‚ด ๋นผ์ฃผ๋Š” ๊ฒฝ์šฐ๋งŒ ์กฐ๊ฑด์‹์•ˆ์—์„œ ๋นผ์ค„ 1์‚ด์„ ์—…๋ฐ์ดํŠธ ์‹œํ‚ค๊ณ ,
    โ†’ ๋งŒ์•ฝ ์ƒ์ผ๋‚ ์ด๊ฑฐ๋‚˜ ์ƒ์ผ ์ง€๋‚œ๊ฒฝ์šฐ์—๋Š” 1์‚ด์„ ๋นผ์ฃผ๋„๋ก ์—…๋ฐ์ดํŠธํ•˜๋Š” ์กฐ๊ฑด์‹์— ๊ฑธ๋ฆฌ์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ€๋‹ˆ๊นŒ ๊ทธ๋Œ€๋กœ ๋‚˜์ด๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. (= 0์„ ๋นผ์ฃผ๋‹ˆ๊นŒ ๊ทธ๋Œ€๋กœ์ธ๊ฑฐ๋‹ค!)
function getWesternAge(birthday) {
    var today    = new Date();
    var thisYear = 0;
    
    if (today.getMonth() < birthday.getMonth()) {
        thisYear = 1;
    } else if ((today.getMonth() == birthday.getMonth()) && today.getDate() < birthday.getDate()) {
        thisYear = 1;
    }
    
    var age = today.getFullYear() - birthday.getFullYear() - thisYear;
    
    return age;
}

console.log(getWesternAge(new Date('1981-07-29T03:24:00')));
console.log(getWesternAge(new Date('1990-07-30T19:45:06.562Z')));
console.log(getWesternAge(new Date('1990-07-31T00:45:06.562Z')));

์ถœ๋ ฅ๊ฒฐ๊ณผ




21. Number ๐Ÿ”ฅ

์Šค์Šค๋กœ๋Š” ๋– ์˜ฌ๋ฆด ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค...

keyword : Math.round / Math.ceil / Math.floor / Math.random()

์•ž์œผ๋กœ ๋žœ๋คํ•จ์ˆ˜๋ฅผ ์“ธ ์ผ์ด ์ •๋ง ๋งŽ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ Math.random()์œผ๋กœ๋Š” ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฒ”์œ„์˜ ๋žœ๋ค์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
ํ•ญ์ƒ 0.0000000000000000์—์„œ 0.9999999999999999 ์‚ฌ์ด ๊ฐ’์—์„œ๋งŒ returnํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .
์ตœ์†Œ(min), ์ตœ๋Œ€๊ฐ’(max)์„ ๋ฐ›์•„ ๊ทธ ์‚ฌ์ด์˜ ๋žœ๋ค์ˆ˜๋ฅผ returnํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”.

  • ํ•จ์ˆ˜๋Š” ์งง์ง€๋งŒ, ์ด๋ฒˆ์—๋Š” ์ˆ˜ํ•™์˜ ๋‡Œ๋ฅผ ์กฐ๊ธˆ ์จ์•ผ ํ•˜๋Š” assignment์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

function getRandomNumber (min, max) {

  const random = Math.random() * (max - min) + min;
  return random;
}

Model Solution

  • ๋‚ด ์ฝ”๋“œ์™€์˜ ์ฐจ์ด์ 
  • ์†”๋ฃจ์…˜์—์„œ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋žœ๋ค์ˆซ์ž๋Š” Math.floor ๋ฅผ ์ด์šฉํ•ด์„œ ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ ค์ค€๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  Math.floor(Math.random() * (max + 1 - min)) + min ์ด๋ ‡๊ฒŒ 1 ์„ ๋”ํ•ด์ฃผ๋ฉด, ์กฐ๊ธˆ ๋” ๊ณ ๋ฅธ ๋ถ„ํฌ์˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
function getRandomNumber(min, max) {
  return Math.floor(Math.random() * (max + 1 - min)) + min;
}

์ถœ๋ ฅ๊ฒฐ๊ณผ


์ฐธ๊ณ 

Math.random() * (max - min) + min

์™œ max-min์„ ํ•˜๊ณ , ๋‚˜์ค‘์—” ๋˜ ์™œ min์„ ๋”ํ•ด์•ผ ํ•˜๋Š”๊ฑด์ง€ ๊ทธ๋ƒฅ ๋ด์„œ๋Š” ์ดํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š์•„์„œ ์กฐ๊ธˆ ํ’€์–ด์„œ ์ •๋ฆฌํ•ด๋ณด๋‹ˆ ์ดํ•ด๊ฐ€ ๊ฐ”๋‹ค.

โ†’ ์ด ๊ณผ์ •๋Œ€๋กœ ๋‹ค์‹œ ํ•œ๋ฒˆ 1์„ ๋”ํ•˜๋Š” ๊ฑธ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ, ์•„๋งˆ 1์„ ๋”ํ•ด์ฃผ๋ฉด ๋‚ด๊ฐ€ ์ „๋‹ฌํ•ด์ค€ ์ตœ๋Œ€๊ฐ’๊นŒ์ง€๋„ ๊ฒฐ๊ณผ์— ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ™•๋ฅ ์— ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์™œ๋ƒ๋ฉด ์ด ์ƒํ™ฉ์—์„œ๋Š” floor๋กœ ๋ฒ„๋ฆผ์„ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ๋ฅผ๋“ค์–ด ์ตœ๋Œ€๊ฐ’์„ 350์„ ๋„ฃ์—ˆ์–ด๋„, 351์„ ๋„˜์ง€ ์•Š๋Š” ์†Œ์ˆ˜์ž๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ˆซ์ž์ธ 350.426369380 ๋“ฑ๋“ฑ ์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋ฏ€๋กœ ๋ฒ„๋ฆผ์„ ํ•ด์ฃผ๋ฉด 350์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ™•๋ฅ ์ด ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


๊ทธ๋ฆฌ๊ณ  ์ด๊ฑด ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ค๊ฐ€ ์—ฌ๊ธฐ ์—์„œ ๋ฐœ๊ฒฌํ•œ ๊ธ€์ธ๋ฐ ๊ณต๊ฐ์ด ๊ฐ€์„œ ์ €์žฅํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ €๋ถ„์€ ์‹ฌ์ง€์–ด guilty ๊นŒ์ง€โ—๏ธ

๊ทธ๋ฆฌ๊ณ  ์ถ”๊ฐ€๋กœ ์ด๊ฒƒ๋„ ๋ฉ”๋ชจํ•ด๋‘๊ณ  ์‹ถ๋‹ค.




22. Object

keyword : array / index / index๋Š” 0๋ถ€ํ„ฐ

getData๋Š” ์„ธ ๊ฐœ์˜ ๋ฐฐ์—ด์„ ์ธ์ž๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

  • salesArr: ๋‚ ์งœ๋ณ„ ํŒ๋งค๋Ÿ‰
  • ex) [["20190401", 34],ย ["20190402", 23],ย ["20190403", 29]]
  • reviewArr: ๋‚ ์งœ๋ณ„ ๋ฆฌ๋ทฐ์ˆ˜
  • ex) [["20190328", 3],ย ["20190401", 0],ย ["20190403", 1]]
  • likeArr: ๋‚ ์งœ๋ณ„ ์ข‹์•„์š”์ˆ˜
  • ex) [["20190328", 98],ย ["20190401", 102],ย ["20190403", 125]]

    ์œ„์˜ ์˜ˆ์‹œ๋กœ ๋ณด์—ฌ๋“œ๋ฆฐ ๋ฐฐ์—ด์€ ๋‹จ์ง€ ์˜ˆ์ผ๋ฟ,
    ๋‚ ์งœ๋ณ„ ํŒ๋งค๋Ÿ‰ ๋ฐฐ์—ด์€ 365์ผ์น˜ ์š”์†Œ๊ฐ€ ๋“ค์–ด์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ return ํ•ด์ฃผ์„ธ์š”.
    objData๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” property๋Š” 3๊ฐœ ์ž…๋‹ˆ๋‹ค.
  • sumAmount: ์ด ํŒ๋งค๋Ÿ‰
  • sumReview: ์ด ๋ฆฌ๋ทฐ๊ฐœ์ˆ˜
  • sumLike: ์ด ์ข‹์•„์š”์ˆ˜

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ
ver.1

function getData(salesArr,reviewArr,likeArr){
  
let amount = 0;
let review = 0;
let like = 0;

for (let i = 0 ; i < salesArr.length; i++){
  const value = salesArr[i][1];
  amount = amount + value;

}
for (let i = 0 ; i < reviewArr.length; i++){
  const value = reviewArr[i][1];
  review = review + value;
  
}
for (let i = 0 ; i < likeArr.length; i++){
  const value = likeArr[i][1];
  like = like + value;

}

let objData = {};
objData.sumAmount = amount;
objData.sumReview = review;
objData.sumLike = like;

return objData;
}

ver.2
(๋ณต์Šตํ•˜๋ฉด์„œ ๋‹ค์‹œ ์ž‘์„ฑํ•ด ๋ณธ ์ฝ”๋“œ) โ†’ += ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ ๋นผ๊ณ ๋Š” ๋˜ ๋˜‘๊ฐ™์ด ํ’€์—ˆ๋‹ค.

function getData(salesArr,reviewArr, likeArr){
let sumAmount = 0;
let sumReview = 0;
let sumLike = 0;
  
for (let i = 0; i < salesArr.length; i++) {
  let amount = salesArr[i][1];
  sumAmount += amount;
}

for (let i = 0; i < reviewArr.length; i++) {
  let review = reviewArr[i][1];
  sumReview += review;
}

for (let i = 0; i < likeArr.length; i++) {
  let like = likeArr[i][1];
  sumLike += like;
}
  
let objData = {};
objData.sumAmount = sumAmount;
objData.sumReview = sumReview;
objData.sumLike = sumLike;

return objData;
}

Model Solution
Assignment 2

  • ๋‚ด ์ฝ”๋“œ์™€์˜ ์ฐจ์ด์ 
  • ๋‚˜๋Š” object๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ• ๋‹นํ•˜๊ณ  ๋ฆฌํ„ดํ–ˆ๋Š”๋ฐ, ์†”๋ฃจ์…˜์—์„œ๋Š” ์•„์˜ˆ ์˜ค๋ธŒ์ ํŠธํ˜•ํƒœ๋กœ ๋ฆฌํ„ดํ•ด๋ฒ„๋ ธ๋‹ค. (๋ชฐ๋ž๋˜ ๋ฐฉ๋ฒ•์ด๋‹ค!)
function getData(salesArr, reviewArr, likeArr) {
  let sumAmount = 0;
  let sumReview = 0;
  let sumLike = 0;
  
  for (let i = 0; i < salesArr.length; i++) {
    let amount = salesArr[i][1];
    
    sumAmount = sumAmount + amount;
  }
  
   for (let i = 0; i < reviewArr.length; i++) {
    let review = reviewArr[i][1];
    
    sumReview += review;
  }
  
  for (let i = 0; i < likeArr.length; i++) {
    let like = likeArr[i][1];
    
    sumLike += like;
  }
  
  return {   //์˜ค๋ธŒ์ ํŠธ ํ˜•ํƒœ๋กœ ๋ฆฌํ„ด!
    sumAmount: sumAmount,
    sumReview: sumReview,
    sumLike: sumLike
  };
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




24. Class

keyword : method / state / Constructor / instance

class ์ƒ์„ฑ์„ ์—ฐ์Šตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
MyMath๋ผ๋Š” class๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.
constructor์—์„œ๋Š” ์ˆซ์ž 2๊ฐœ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ํ”„๋กœํผํ‹ฐ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
์ด 4๊ฐœ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”.

  • getNumber: ๋‘ ๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ ex)ย [1, 2]
  • add: ๋‘ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋Š” ๋ฉ”์„œ๋“œ
  • substract: ๋‘ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋นผ๋Š” ๋ฉ”์„œ๋“œ
  • multiply: ๋‘ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๊ณฑํ•˜๋Š” ๋ฉ”์„œ๋“œ

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ
ver.1

class MyMath {
  constructor(num1, num2) {
    this.num1 = num1;
    this.num2 = num2;
  }
  getNumber() {
    return [this.num1, this.num2];
  }
  add(){
    return this.num1 + this.num2;
  }
  substract(){
    return this.num1 - this.num2;
  }
  multiply(){
    return this.num1 * this.num2;
  }
}

ver.2 (Model Solution๊ณผ ๋™์ผ) โœ…
(๋ณต์Šตํ•˜๋ฉด์„œ ๋‹ค์‹œ ์ž‘์„ฑํ•ด ๋ณธ ์ฝ”๋“œ) โ†’ num1,num2 ๋ฅผ a,b ๋กœ ๋ณ€๊ฒฝํ•œ ๊ฒƒ ๋นผ๊ณ ๋Š” ๋˜‘๊ฐ™๋‹ค.

class MyMath {

  constructor(a, b) {
    this.num1 = a;
    this num2 = b;
  }
  getNumber() {
    return [this.num1, this.num2];
  }
  add() {
    return this.num1 + this.num2;
  }
  substrct() {
    return this.num1 - this.num2;
  }
  multiply() {
    return this.num1 * this.num2;
  }
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




25. Object

์•„๋ž˜์˜ ๊ฐ์ฒด์—์„œ '์ƒ๋Ÿฌ๋“œ'๋ผ๋Š” ๊ฐ’์ด ์ถœ๋ ฅ ๋  ์ˆ˜ ์žˆ๋„๋ก getAnswerํ•จ์ˆ˜์—์„œ return ํ•ด ์ฃผ์„ธ์š”.

let myProfile = {
  name: '๊น€๊ฐœ๋ฐœ',
  address: {
    email: 'geabal@gmail.com',
    home: '์œ„์›Œํฌ'
  },
  'my favorite': {
    food: [{
    name: '์ƒ๋Ÿฌ๋“œ',
    price: 3500  
    }, {
    name: '์‚ผ๊ฒน์‚ด',
    price: 15000  
    }],
    hobby: ['์ถ•๊ตฌ']
  }
}

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ (Model Solution๊ณผ ๋™์ผ) โœ…

function getAnswer() {
	return myProfile["my favorite"].food[0].name;  //์ƒ๋Ÿฌ๋“œ
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




28. Array methods

keyword : Array.map() / Array.forEach()

Assignment1
๋‘ ๋ฌธ์ œ ๋ชจ๋‘ map ๋ฉ”์„œ๋“œ์™€ arrow function์„ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”.
1. moreThan100 ํ•จ์ˆ˜์— ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์„ ์ธ์ž๋กœ ๋„˜๊ฒจ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
100 ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด, true๋ฅผ
100 ๋ณด๋‹ค ์ž‘์œผ๋ฉด false๋กœ ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ
์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ returnํ•ด์ฃผ์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด

nums(input)์€
[100, 9, 30, 7]
return์€
[true, false, false, false]

Assignment 1

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

const moreThan100 = nums => {
const boolean = nums.map(num => {
  if (num >= 100){
    return true;
  } else {
    return false;
  }
})
return boolean;
}

์ถœ๋ ฅ๊ฒฐ๊ณผ


Assignment2
1. formatDate ํ•จ์ˆ˜์— ๋‚ ์งœ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด์„ ์ „๋‹ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
๋‚ ์งœ์˜ data type์€ string์ด๋ฉฐ,
๋ณด๋‚ด๋Š” ๋‚ ์งœ ํƒ€์ž…์€ 'YYYY-MM-DD' ์ž…๋‹ˆ๋‹ค.
ํ•ด๋‹น ๋‚ ์งœ์˜ ํ˜•์‹์„ 'YYYY๋…„ MM์›” DD์ผ' ๋กœ ๋ฐ”๊ฟ”์„œ
์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ return ํ•ด์ฃผ์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด

dates(input)์€
['2019-03-21', '2019-04-21', '2019-05-21']
return์€
['2019๋…„ 03์›” 21์ผ', '2019๋…„ 04์›” 21์ผ', '2019๋…„ 05์›” 21์ผ']

Assignment 2

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

const formatDate = dates => {
 const formatDates = dates.map(date => {
    return `${date[0]}${date[1]}${date[2]}${date[3]}๋…„ ${date[5]}${date[6]}์›” ${date[8]}${date[9]}์ผ`
  })
  return formatDates;
}

Model Solution

  • ๋‚ด ์ฝ”๋“œ์™€์˜ ์ฐจ์ด์ 
  • solution์—์„œ๋Š” split method ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๊ฐ๊ฐ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด ๋ฆฌํ„ด๊ฐ’์„ ๋งŒ๋“ค์—ˆ๋‹ค.
    โ†’ ์†”๋ฃจ์…˜ ์ฝ”๋“œ์™€ ๋น„๊ตํ•ด๋ณด์•˜์„ ๋•Œ ๋‚ด ์ฝ”๋“œ๊ฐ€ ์ข€ ๋” ์ •ํ™•์„ฑ์ด ๋‚ฎ์„ ๊ฒƒ ๊ฐ™๋‹ค.
const formatDate = dates => {
  return dates.map(dates => {
    let dateArr = dates.split('-');
    
    return `${dateArr[0]}๋…„ ${dateArr[1]}์›” ${dateArr[2]}์ผ`;
  });
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




29. Object ๐Ÿ”ฅ

keyword : Object.keys() / for key in

getExamResult ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”.
์ธ์ž scores ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
๊ฐ์ฒด์˜ ์š”์†Œ์˜ ๊ฐฏ์ˆ˜ ๋ฐ ํ‚ค์˜ ์ด๋ฆ„๋“ค์€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ์ฒด์˜ ๊ฐ’์€ ๋‹ค์Œ 9๊ฐ€์ง€ ๋ฌธ์ž์—ด ์ค‘์—์„œ ํ•˜๋‚˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
('A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F')

{
  '์ƒํ™œ์†์˜ํšŒ๊ณ„': 'C',
  '๋…ผ๋ฆฌ์ ๊ธ€์“ฐ๊ธฐ': 'B',
  '๋…์ผ๋ฌธํ™”์˜์ดํ•ด': 'B+',
  '๊ธฐ์ดˆ์ˆ˜ํ•™': 'D+',
  '์˜์–ดํšŒํ™”': 'C+',
  '์ธ์ง€๋ฐœ๋‹ฌ์‹ฌ๋ฆฌํ•™': 'A+',
}


์ธ์ž requiredClasses ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด๋กœ ๋œ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.

['์˜์–ดํšŒํ™”', '๊ธฐ์ดˆ์ˆ˜ํ•™', '๊ณตํ•™์ˆ˜ํ•™', '์ปดํ“จํ„ฐ๊ณผํ•™๊ฐœ๋ก ']

๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋„๋ก ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”


1. scores ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ‚ค๋“ค์€ ์ƒˆ๋กœ์šด ๊ฐ์ฒด์— ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‹จ, ๊ทธ ๊ฐ’๋“ค์€ ๋‹ค์Œ ์›๋ฆฌ์— ๋”ฐ๋ผ ์ˆซ์ž๋กœ ๋ฐ”๋€Œ์–ด ํ• ๋‹น๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

A+ => 4.5
A => 4
B+ => 3.5
B => 3
C+ => 2.5
C => 2
D+ => 1.5
D => 1
F => 0
  1. requiredClass ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ๋Š” ์กด์žฌํ•˜์ง€๋งŒ, scores์˜ ํ‚ค๋กœ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ•ญ๋ชฉ์ด ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ์š”์†Œ๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด์˜ ํ‚ค๊ฐ€ ๋˜๊ณ , ๊ฐ’์œผ๋กœ 0์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์œ„์—์„œ ์˜ˆ์‹œ๋กœ ๋ฌ˜์‚ฌ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด ์ธ์ž๋กœ ๋“ค์–ด์™”๋‹ค๋ฉด,
    ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด๊ณผ ๋ฆฌํ„ด๋ฉ๋‹ˆ๋‹ค. (์š”์†Œ๊ฐ„ ์ˆœ์„œ๋Š” ๋‹ค๋ฅผ์ˆ˜ ์žˆ์ง€๋งŒ, ์ฑ„์ ์— ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค.)
{
  '์ƒํ™œ์†์˜ํšŒ๊ณ„': 2,
  '๋…ผ๋ฆฌ์ ๊ธ€์“ฐ๊ธฐ': 3,
  '๋…์ผ๋ฌธํ™”์˜์ดํ•ด': 3.5,
  '๊ธฐ์ดˆ์ˆ˜ํ•™': 1.5,
  '์˜์–ดํšŒํ™”': 2.5,
  '์ธ์ง€๋ฐœ๋‹ฌ์‹ฌ๋ฆฌํ•™': 4.5,
  '๊ณตํ•™์ˆ˜ํ•™': 0,
  '์ปดํ“จํ„ฐ๊ณผํ•™๊ฐœ๋ก ': 0,
}

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ
ver.1
โ†’ ์ฒ˜์Œ์—๋Š” ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๊ทธ๋ƒฅ ๋ฌธ์ œ๋ฅผ ์ฝ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ ๋จผ์ € ๊ฐ์ฒด์˜ key์™€ value๋ฅผ ๊ฐ๊ฐ์˜ ๋ฐฐ์—ด๋กœ ๋ถ„๋ฆฌํ•ด ๋‹ด์•˜๊ณ , ์•ŒํŒŒ๋ฒณ์ ์ˆ˜๋ฐฐ์—ด์€ ๋‹ค์‹œํ•œ๋ฒˆ ์ˆซ์ž์ ์ˆ˜์˜ ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ”์คฌ๋‹ค. ๊ทธ ํ›„ ๊ฐ๊ฐ์˜ ๋ฐฐ์—ด๋“ค์„ ๊ฐ™์€ ์ธ๋ฑ์Šค๋ผ๋ฆฌ ์ƒˆ ๊ฐ์ฒด์˜ key์™€ value๋กœ ์ถ”๊ฐ€์‹œ์ผฐ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋ถ€๋ถ„์—์„œ ๋ฐฐ์—ด์€ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€๋งŒ, ๊ฐ์ฒด๋Š” ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ผ๋Š” ๊ฒƒ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ํ•ด์ค˜๋„ ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ,, ์ผ๋‹จ ์™„์„ฑ์„ ์‹œ์ผœ๋ณด๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ ค๊ณ  ๊ณ„์† ์ž‘์„ฑํ–ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œํ•œ๋ฒˆ requiredClass ๋ฐฐ์—ด์— ์žˆ๋Š” ์š”์†Œ๋“ค์„ valuesArr(๊ณผ๋ชฉ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด) ๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๋ฉด์„œ ์—†๋‹ค๋ฉด ๊ฐ์ฒด์— ๋˜ ์ถ”๊ฐ€์‹œ์ผœ์คฌ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ดค๋Š”๋ฐ ๊ฒฐ๊ณผ๊ฐ€ pass๊ฐ€ ๋‚˜์™€์„œ ์ด ์ฝ”๋“œ๋ฅผ ์ œ์ถœํ–ˆ๋‹ค.

const getExamResult =(scores, requiredClasses) => {
  const result = {}
  const valuesArr = Object.values(scores);
  const translated = valuesArr.map(score => {
    switch(score) {
      case "A+" :
        return 4.5;
        break;
      case "A" :
        return 4;
        break;
      case "B+" :
        return 3.5;
        break;
      case "B" :
        return 3;
        break;
      case "C+" :
        return 2.5;
        break;
      case "C" :
        return 2;
        break;
      case "D+" :
        return 1.5;
        break;
      case "D" :
        return 1;
        break;
      case "F" :
        return 0;
        break;
    }
  });

  let title = [];
  
  for(let key in scores) {
   title.push(key);
  }
  
  for (let i = 0; i < title.length; i++) {
    const subjectName = title[i];
    const score = translated[i];
    
    result[subjectName] = score;
  }
  
  for (let i = 0; i < requiredClasses.length; i++){
    const required = requiredClasses[i];
    
    if(!title.includes(required)){
      result[required] = 0;
    } 
  }
  
  return result
}

ver.2
โ†’ ์ฒ˜์Œ ์ œ์ถœํ–ˆ๋˜ ๋ฐฉ๋ฒ•์ด ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ๊ฒƒ ๊ฐ™์•„์„œ ๋‘๋ฒˆ์งธ๋กœ ํ’€์–ด๋ณผ ๋•Œ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ๋„ํ–ˆ๋‹ค. for key in ์„ ์ด์šฉํ•ด์„œ ๋ฐฐ์—ด์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋ฒˆ์—๋Š” ์•ŒํŒŒ๋ฒณ์ ์ˆ˜๋ฅผ ์ˆซ์ž์ ์ˆ˜๋กœ ๋ณ€ํ™˜์‹œ์ผฐ๋‹ค. ์ด ๋ถ€๋ถ„์€ solution code๋ž‘ ๋˜‘๊ฐ™๋‹ค!! ๐Ÿ‘๐Ÿป
๊ทธ๋ฆฌ๊ณ  requiredClass ๋ฅผ ๋น„๊ตํ•˜๋Š”๊ฒƒ์€ ๋ฐฐ์—ด์˜ filter method๋ฅผ ์ด์šฉํ•ด์„œ
requiredClass์˜ ์š”์†Œ๊ฐ€ result๊ฐ์ฒด์˜ key๋กœ ์—†์œผ๋ฉด undefined๊ฐ€ ๋‚˜์˜ค๊ธฐ๋•Œ๋ฌธ์— ์ด๊ฑด false ์ด๋ฏ€๋กœ !result[item] ํ•ด์„œ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ณผ๋ชฉ์„ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ณ  result ๊ฐ์ฒด์— ์ƒˆ๋กœ์šด key๋กœ ์ถ”๊ฐ€์‹œ์ผฐ๋‹ค.

function getExamResult(scores,requiredClasses) {
 let result = {};
 let scoreObj = {
   "A" : 4.5,
   "A+":4.5,
   "A":4,
   "B+":3.5,
   "B":3,
   "C+":2.5,
   "C":2,
   "D+":1.5,
   "D":1,
   "F":0   
 }
 
 for (let key in scores) {
  const changed = scoreObj[scores[[key]]];
  result[key] = changed;
 }
 
  const filter = requiredClasses.filter(item => !result[item]);
  
  for (let i = 0; i < filter.length; i++) {
    let subject = filter[i];
    result[subject] = 0;
  }

  return result;
}

Model Solution

  • ๋‚ด ์ฝ”๋“œ์™€์˜ ์ฐจ์ด์ 
  • requiredClasses์˜ ์š”์†Œ๋“ค์„ result๊ฐ์ฒด์˜ ํ‚ค๋กœ์จ ์ ‘๊ทผํ•ด undefined๊ฐ€ ๋‚˜์˜ค๋Š” ๊ณผ๋ชฉ๋“ค์„ value 0์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ™์•˜์ง€๋งŒ, ๋‚˜๋Š” filter๋ฅผ ์“ฐ๊ณ  ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๋˜ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ–ˆ์ง€๋งŒ, solution์—์„œ๋Š” forEach๋ฅผ ์ด์šฉํ•ด ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค. ๋‚˜๋Š” ํ•œ ๋‘ ๋‹จ๊ณ„๋ฅผ ๋” ๊ฑฐ์ณค๊ธฐ๋•Œ๋ฌธ์— ์ด๋ถ€๋ถ„์„ ๋‹ค์‹œ ์ตํ˜€๋ด์•ผ๊ฒ ๋‹ค!

ver.1

const getExamResult =(scores, requiredClasses) => {
  const result = scores;
  
  for(let key in result){
    if(result[key] === "A+"){
      result[key] = 4.5;
    }
    else if(result[key] === "A"){
      result[key] = 4;
    }
    else if(result[key] === "B+"){
      result[key] = 3.5;
    }
    else if(result[key] === "B"){
      result[key] = 3;
    }
    else if(result[key] === "C+"){
      result[key] = 2.5;
    }
    else if(result[key] === "C"){
      result[key] = 2;
    }
    else if(result[key] === "D+"){
      result[key] = 1.5;
    }
    else if(result[key] === "D"){
      result[key] = 1;
    }
    else if(result[key] === "F"){
      result[key] = 0;
    }
  }
  
  requiredClasses.forEach((el) => {
   if(result[el] === undefined){
      result[el] = 0;
    }
  })
  
  return result
}

ver.2

Assignment - ๋ฐฉ๋ฒ• 2.
const getExamResult = (scores, requiredClasses) => {
  const result = {}
  const list = {
    "A+":4.5,
    "A":4,
    "B+":3.5,
    "B":3,
    "C+":2.5,
    "C":2,
    "D+":1.5,
    "D":1,
    "F":0    
  }
  
  for(let key in scores){
    result[key] = list[scores[key]];
  }
  
  const keys=Object.keys(result)
  for(let i in requiredClasses){
    if(!keys.includes(requiredClasses[i])){
      result[requiredClasses[i]] = 0;
    }
  }
  
  return result;
}

์ถœ๋ ฅ๊ฒฐ๊ณผ




๐Ÿ”ฅ <--- ์–ด๋ ค์› ๋‹ค!

๐Ÿ’ญ <--- ๋Š๋‚€์ !

โ“ <--- ์งˆ๋ฌธ!

๐ŸŒช <--- ํ˜ผ๋ž€!

profile
Becoming a front-end developer ๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด