TIL 12 - Toy-Problem 풀기

hojung choi·2021년 6월 9일
0

js

목록 보기
12/17
post-thumbnail

1. 배열을 입력 값으로 받아 10 이상의 요소만 새로운 배열로 반환하는 함수를 작성해주세요.

const numbers = [10,3,55,4,1,0]; 
function getOverTenItems() { } 
console.log(getOverTenItems(numbers)) // [10,55]

1-1. filter 사용

function getOverTenItems(arry) {
  let result = arry.filter((item) => item >= 10);
  return result;
}

배열 메서드 중 가장 먼저 떠올라 작성했던 코드!
맨 처음엔 함수 안에 result변수를 선언하지 않고 filter메서드 코드만 적었더니 값이 undefind가 나왔다 (return값이 없으니 당연 😹) result값을 선언해주고, return값을 result로 줬더니 값이 아주 잘 나왔다! 👍🏻

1-2. forEach + push 사용

function getOverTenItems(arry) {
  let result = [];
  arry.forEach((element) => {
    if (element >= 10) {
      result.push(element);
    }
  });
  return result;
}

워낙 for문에만 익숙해져 있던 터라 forEach문을 쓰는데 낯설었다..!!
그래도 배운것을 생각하고 코드를 적으니 값은 그뤠잇! ⭐️

1-3. map + push 사용

function getOverTenItems(arry) {
  const result = [];
  arry.map((i) => {
    if (i >= 10) {
      result.push(i);
    }
  });
  return result;
}

for문 대신 여러 반복문에 익숙해지자!

1-4. reduce + push 사용

function getOverTenItems(arry) {
  let result = arry.reduce((prev, cur) => {
    if (cur >= 10) {
      prev.push(cur);
    }
    return prev;
  }, []);
  return result;
}

filter와 같은 이유로 다 짜놓고 값을 return해주지 않아서 한참을 헤매고 있었다 😡
result값을 할당해 줘야 return을 받는거다!!! 제발 기억하자 호정아 ㅜㅜ




2. 도희와 호정이의 2020년 여행 장소와 간 횟수를 각각 객체로 표시했다. 총 여행을 간 횟수가 5번 이상이라면 checkNumberOfVisits 함수가 true를 반환하고 미만이라면 false를 반환하게 작성해주세요.

const dohee = { 제주도: 2, 부산: 1, 전주: 1, 속초: 1 };
const hojung = { 제주도: 1, 일본: 1 };

function checkNumberOfVisits(Obj) {}

console.log(checkNumberOfVisits(dohee)); // true
console.log(checkNumberOfVisits(hojung)); // false

2-1. for/in문 사용

function checkNumberOfVisits(Obj) {
  let sum = 0;
  for (let key in Obj) {
    sum += Obj[key];
  }
  return sum >= 5;
}

대괄호 표기법 :obj["property"] 대괄호 표기법이 기억나지 않아 한참을 고민했었다... obj TIL을 다시 복습하고 나서야 기억이 나 풀었던 문제 ㅜㅜ 🤯 복습도 복습이지만 TIL에 정리해놔서 금방 기억할 수 있었다!




3. switch case 문을 사용하여 사칙 연산이 가능한 계산기 함수를 작성해주세요.

function caculator(operator, num1, num2) {}
console.log(caculator("+", 10, 2)); // 12
console.log(caculator("1", 1, 5)); // 'Error'
function caculator(operator, num1, num2) {
  switch(operator){
    case "+":
      return num1+num2;
      break;
    case "-":
      return num1-num2;
      break;
    case "*":
      return num1+num2;
      break;
    case "/":
      return num1/num2;
      break;
    default:
      return "Error";
      break;
  }
}
console.log(caculator("+", 10, 2)); // 12
console.log(caculator("1", 1, 5)); // 'Error'

switch문을 너무 오랜만에 써봤더니 잠시 주춤했다..ㅎㅎ 그래도 어느정도 반복하니 쉽게 풀었던 문제!
함수와 switch문을 알고있다면 쉽게 풀 수 있는 문제였다 ! 😇




4. 입력하는 문자열의 마지막 문자를 반환하는 함수를 작성해주세요.

function getLastChar(txt) {}
console.log(getLastChar("안녕하세요!")); // !

split 사용

function getLastChar(txt) {
  const arry = txt.split("");
  return arry[arry.length - 1];
}

먼저 문자열을 배열로 바꿔 준 다음, 해당 배열의 가장 마지막 인덱스를 return해주었더니 마지막 문자열이 찍혔다! 배열 메서드 짱짱 💪🏻

String.length 사용

function getLastChar(txt) {
  const chartxt = txt[txt.length - 1];
  return chartxt;
}

문자열에서도 length를 쓸 수 있다!!! 🙆🏻‍♀️
배열의 길이만 length를 쓸 수 있는것이 아니다~! 문자열에서도 길이값을 반환 할 수 있다는 것! 기억하자!
참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/length




5. 객체의 키를 배열에 담아 반환하는 함수를 작성해주세요.

function getKeys(Obj) {}
const travelPlace = { 제주도: 2, 부산: 1, 전주: 1, 속초: 1 };
console.log(getKeys(travelPlace)); // ['제주도', '부산', '전주', '속초']

5-1. for/in문 사용

function getKeys(Obj) {
  const keys = [];
  for (let key in Obj) {
    keys.push(key);
  }
  return keys;
}

객체에서는 for/in문이 유용하게 쓰인다 ㅎㅎ 앞 문제에서 풀었던 풀이라 그런지 술술 풀렸다!

5-2. Object.keys 메서드 사용

console.log(Object.keys(travelPlace)); // ['제주도', '부산', '전주', '속초']

사실 이 문제는 전에 Object TIL을 정리했었을때 다뤘던 문제이다.
그때에도 for/in문과 Object.keys메서드를 사용해서 비교했었는데 이 문제는 함수를 만드는 문제이기 때문에 여기서는 for/in문을 쓰는것이 맞다!




📌 TMI

매서드를 사용하여 값을 도출해내는 것도 좋지만 문제를 잘 파악해야한다!
또한, 메서드의 뿌리는 모두 기본 지식이므로, 메서드에 익숙해져 있더라고 기본 뿌리를 잊지 말자! (if문과 for문 같은 기본적인 제어문과 반복문들,,,)

profile
🧚🏻‍♀️ Front-End Developer

0개의 댓글