(TIL) precourse JS 오답정리

MIN KYOUNG KIM·2022년 2월 18일
0

02. isBiggerThanFive

Q. 하나의 숫자를 인자로 받아 5보다 크면 true 아니면 false를 반환하는 함수를 구현해주세요.

내 답안

function isBiggerThanFive(num) {
if( num > 5){
      return true 
    }else{
      return false
    }
}

isBiggerThanFive();

개선후 )

나는 if문을 사용해서 함수를 작성했다. 물론 위의 방법은 틀린 것은 아니다. 하지만 true,false를 반환하는 경우라면 아래와 같이 한 줄로 작성할 수 있다. 와우!!

**return에 조건식을 적으면 boolean으로 반환한다. 이후 모든 문제를 ...한줄로 작성할 수 있었다는 매직!

function isBiggerThanFive(num) {
	return num >5; 
}

isBiggerThanFive(8)

05.getSecondElement

Q. 인자로 반드시 길이가 2 이상인 배열이 들어옵니다.배열의 두번째 요소를 반환하는 함수를 구현해주세요.

내 답안

function getSecondElement(numbers) {
   let result = numbers
    if(result.length > 2){
       return result[1];
    }
}

let number = [1,6,7,4];
console.log(getSecondElement(number))

개선후 )

전반적으로 이번 시험에서 내가 문제를 다소 어렵게 생각했다. “2이상인 배열이 들어온다” 라는 문구를 보고 아 조건식이구나! 라고 생각했다. 그래서 위와 같은 코드를 작성했다. 먼저, 배열의 길이를 보고 2이상인지 확인 작업을 하고 그 후에 배열의 2번째 요소를 작성한다 라고 적었다.... 그렇지만 정작 문제는 걍 배열의 두번째 요소를 보여달라는 말이었다ㅠㅠ

function getSecondElement(numbers) {
	 return numbers[1];
}

let number = [1,6,7,4];
console.log(getSecondElement(number))

07 getSumOfArray

Q.아래 조건을 만족하는 함수를 구현해주세요.

배열은 길이가 1이상이며 모든 요소가 숫자로 되어있습니다.

배열 모든 요소의 합을 반환하는 함수를 구현해주세요.

내답안

  • 조건이 아닌데 조건식이라고 착각했다. 그래서 배열 안에 들어가는 요소들이 먼저 숫자인지 확인하는 작업을 넣어줬다. check 변수명을 보면, 일단 배열안에 있는 요소가 숫자인지 확인!
  • 그러고 난 뒤, sum 변수명에 배열안에 수를 더하는 식을 표현을 넣어줌
  • 조건식을 시작
    • 먼저, 배열의 길이가 1 미만이거나, 숫자가 아닌 거를 체크해줌. 조건이 맞으면 바로 false를 반환해줌
    • 마지막으로 return sum을 반환
function getSumOfArray(numbers) {

  let arr = numbers;
  let check = arr.forEach(arr => arr === number);
   const sum = arr.reduce((a,b) => a +b);
   if(arr.length < 1 && !check ){
       return false
   }else{
      return sum 
   }
}
getSumOfArray()

개선후

  • 문제를 잘못 파악한 1인. 배열 길이 1개 이상 및 숫자가 조건식이 아닌, default로 들어오는 상황임! 그래서 그것을 체크해줄 필요가 없었다고 한다.
  • 멘토님께서 2가지 방법을 쓰셨는데, 1번답안은 숫자랑 배열길이 조건 빼면 나와 거의 비슷!
  • 대신 다른점은 나는 reduce()라는 메서드를 사용하였고, 멘토님은 +=이라는 연산방법 사용! 내가 봤을때 이게 훨씬 직관적이고 편한거 같다
  • 두번째 방법은 ... 한줄로 끝나는 매직. forEach!
function getSumOfArray(numbers) {

   let amount = 0;
   for( let i = 0; i < numbers.length ; i++){
     amount += numbers[i];
   }
   return amount; 

}

getSumOfArray()
function getSumOfArray(numbers) {

   numbers.forEach((num) => {return amount += num});

   return amount; 

}
getSumOfArray()

08. findAdultName

Q. 배열에서 성인을 찾아 그 이름을 반환하는 함수를 만들어주세요.

함수는 인자로 객체가 요소인 배열을 받습니다.

배열의 요소는 각 사람에 대한 객체이며 아래는 배열의 예시입니다.

배열 예시 : [

{ name: 'tom', age: 10, gender: 'male' },

{ name: 'sera', age: 30, gender: 'female' },

]

함수의 반환값 : 'sera'

배열에는 성인이 없거나 오직 한 명만 있습니다.

배열에 성인이 없다면 false를 반환해주세요.

19세까지는 미성년자, 20세부터는 성인으로 가정합니다.

내 답안

  • 어제 적은 TIL(Javascript 시험 8)에 있다. 마지막 조건식인 성인이 없을 경우, return false를 해라! 하는 부분이 이해가 잘 되지 않았다. 오늘 자바스립트 풀이 보면서, return에 대한 개념을 잡을 수 있었다. 나랑 비슷한 생각을 하셨던 분이 질문을 하셔서 반가움 (ㅜㅜ나만 이런생각을 한게 아니군!)
  • for문을 다 돌고, 성인이 없으면 그 밖에 return false를 해야한다.
    • 만약 성인이 있다면, for문 안에 if 조건식에서 return 되기 때문에 함수 끝! 이제 정확히 이해됨!!!! >_<
function findAdultName(people) {
  for(let i = 0; i < people.length; i++){
      if(people[i].age >= 20) return people[i].name
  }

  return false;

}

let obj = [
    { name: 'tony', age: 10, gender: 'male' }, 
    { name: 'sera', age: 30, gender: 'female' }, 
  ]
findAdultName(obj);
profile
sin prisa pero sin pausa

0개의 댓글