#TIL wecode Bootcamp Day 12(자바스크립트 중간고사 개념 정리)

Jung Hyun Kim·2020년 6월 6일
0

wecode

목록 보기
12/42

JavaScript 개념정리

내 답안과 모범답안을 비교해보며 개선할 사항을 정리하자(ft.클린코딩의 중요성)☝🏼

1. 짝수인지 판별하는 함수 is_even 작성

%(modular)

  • 사용된 math expression 은 나머지를 표현해주는 % modulus 기호이다.
  • 즉 짝수,홀수를 구분할때 2로 나눴을때 나머지가 0 이라면 짝수, 1이면 홀수라고 표현할 수 있는것.

나의 코드와 모범 답안 코드 비교하기 💯

  • 나의 답안
function is_even (num) {
  if (num%2===0) {
    return "짝수 입니다"
  }
  else if(num%2===1) {
    return "짝수가 아닙니다"
  }
}
  • 모범 답안
  1. function expression을 사용해 간결한 함수구조를 만들었다.
  2. arrow function을 사용하였다.
  3. else return "" 처럼 간결한 문장, 즉 나머지가 1이 아니면 어차피 다 홀수이기 때문에 굳이 정의해주지 않았다.
const is_even = num => {
  if(num % 2 === 0){
    return "짝수 입니다"
  } else
    return "짝수가 아닙니다"
}

2. 문자열의 특정 기호를 기준으로 string 값 반환하기

.split()

  • 사용된 split은 string에서 letter별로 나누거나 혹은 특정 문자를 기준으로 나눌때 사용된다. - 예를 들어 ,를 기준으로 나누고 싶다면 .split(',') , 그냥 알파벳별 나누려면 .split('')로 사용하면 된다.

나의 코드와 모범 답안 코드 비교하기 💯

  • 나의 답안
function get_prefix (string) {
  const splitedString =string.split("-");
  return splitedString[0]
}

get_prefix('BTC-KRW');
  • 모범 답안
  1. 변수를 선언하지 않고 return value에 바로[0]으로 기입해서 함수를 한 줄 줄였다.
  2. 나름 모범답안과 근접해서 다행이다!!!
function get_prefix(word) {
  return word.split('-')[0];
}

get_prefix('BTC-KRW');

3. 팁과 세금을 제외한 식사값이 주어졌을때, "calculate_total" 함수는 팁과 세금이 포함된 총 식사값을 반환하는 함수 만들기

arrow function

  • fuction expression과 arrow function 적극활용할것

나의 코드와 모범 답안 코드 비교하기 💯

  • 나의 답안
function calculate_total(mealprice) {
  const tax = mealprice*0.095;
  const tip = mealprice*0.15;
  const totalPrice = mealprice+tax+tip
  return totalPrice;
}
  • 모범 답안
  1. 변수를 선언하지 않고 원하는 답만 필요한 math expression으로 return값을 주었다.
  2. clear한 전달을위해 변수를 꼭 선언해줬는데, 이렇게 간단한 경우엔 굳이 안해도 되는것 같다.
const calculate_total = num => {
  return num + num * 0.095 + num * 0.15;
}

4. 문자와 문자열이 인자값으로 주어졌을때, 주어진 문자가 나타나는 첫번째 위치를 반환하는 함수 만들기

예시

const output = get_find('a', 'I am a hacker')
console.log(output) // --> 2

for문

  • for 문을 array length 만큼돌다가 letter와 일치할때의 값 i를 return하는 것

나의 코드와 모범 답안 코드 비교하기 💯

  • 나의 답안
function get_find(letter,string) {
  if(!string.includes(letter)) {
    return -1 
}
  else {
  const stringArray =string.split("");
  for (let i=0; i<stringArray.length;i++) {
    if (stringArray[i]===letter) {
      return i
    } 
   }
  }
}
  • 모범 답안
  1. if문을 줄때 먼저 조건일때의 우선순위 요소를 먼저 위치 시킨다. 그럼 앞의 내 코드처럼 아닐때의 기준을 길게 달아줄 필요없이 간단히 return -1로 입력할 수 있다.
function get_find(filter, sentence) {
  for (let i = 0; i < sentence.length; i++) {
    if (sentence[i] === filter) {
      return i;
    }
  }
  
  return -1;
}

get_find('a', 'I am a hacker');

5.find_longest_word 함수 주어진 리스트안에 있는 단어중 가장 긴 단어를 찾을수 있도록 함수 만들기

아니 이게 뭐라고 시간을 엄청 소요하고 굳이 엄청 긴 코드를 넣었다.. 변명을 대자면이상하게 for문이 안돌아서... 더 잡다한 코드를 더 집어 넣었다.
예시

const output = get_find('a', 'I am a hacker')
console.log(output) // --> 2

for문

  • for 문을 array length 만큼돌다가 letter와 일치할때의 값 i를 return하는 것

나의 코드와 모범 답안 코드 비교하기 💯

  • 나의 답안

    너무 부끄럽지만.. 먼저 각각 array에 접근해서 길이를 구한뒤, 새로운 배열에 길이를 넣고, 그배열을 내림차순으로 정리해서, 첫째값을 가져온뒤에 다시 각각 array의 길이랑 비교하면서 return 값을 주었다.. 정말 말도안되게 만들면서 나도 웃었다...
function find_longest_word (arr) {
  
  const zeroLength =array[0].length
  const firstLength =array[1].length
  const secondLength= array[2].length

const newArray =[zeroLength,firstLength,secondLength]
const newNewArray = newArray.sort((a,b) => (
  b-a))
 const bigNumber= newNewArray[0]
 if (zeroLength===bigNumber) {
   return array[0]
 }
 else if(firstLength===bigNumber) {
   return array[1]
 }
 else if(secondLength===bigNumber) {
   return array[2]

}
}
  • 모범 답안
  1. 먼저 변수에 배열에 첫번째 값을 넣어두고
    2.for 문을 돌면서 큰 값을 반복하고 for문이 종료됬을때 비교했던 값 중 제일 큰 값을 뱉어내니..
    3.이렇게 깔끔할 수가... 더 공부하자...
function find_longest_word(arr) {
  let longest = arr[0];
  for(let i = 0; i < arr.length; i++) {
    if(arr[i].length > longest.length) {
      longest = arr[i];
    }
  }
  
  return longest;
}
profile
코린이 프론트엔드 개발자💻💛🤙🏼

0개의 댓글