본문 바로가기
Base/문제풀기

Math.max(), apply, Spread Operator(...) - Javascript

by joooing 2020. 12. 10.
반응형

문제

차례로 3개의 문자열을 입력받아, 가장 짧은 문자열을 리턴하는 문제

 

풀이 과정

1. 배열에 모든 문자열의 길이를 저장

2. 가장 짧은 문자열 길이 구하기

3. 가장 짧은 문자열과 길이가 일치하는 문자열을 리턴

 

function findShortestOfThreeWords(word1, word2, word3) {
  let words = [word1.length, word2.length, word3.length];
  let min = Math.min(...words);

  if (word1.length === min){
    return word1;
  } else if (word2.length === min){
    return word2;
  } 
  return word3;
}

 

새로 알게 된 것

위의 과정으로 접근했더니, 최소값을 구하는 Math.min()함수를 배열의 각 요소에 적용해야했다.

여기서 apply함수를 쓰거나 spread operator(...)을 사용할 수 있다는 것을 알게되었다.

 

Math.max(), Math.min()


Math.max()는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환하는 함수이다. 반대로 Math.min()은 가장 작은 숫자를 반환한다. 

 

Spread Operator (...)


스프레드 연산자는 말 그대로 '펼쳐주는 연산자'라고 할 수 있다. 스프레드 연산자를 사용하면 배열, 문자열, 객체 등의 반복 가능 객체(Iterable Object)를 각각 개별 요소로 분리할 수 있다.

 

다음과 같이 배열의 숫자들 중 가장 크거나 작은 숫자를 쉽게 얻을 수 있어서 이 문제를 풀기 위해 사용했다.

var arr = [1, 2, 3]; 
var max = Math.max(...arr);

 

apply()


apply() 메서드는 주어진 this 값과 배열 (또는 유사 배열 객체) 로 제공되는 arguments 로 함수를 호출합니다. 지정한 this 값과 인수들로 호출한 함수의 결과를 반환한다.

기본 구조는 다음과 같다.

func.apply(thisArg, [argsArray])

 

  • thisArg : func 를 호출하는데 제공될 this값 (인수가 없으면 null, undefined)
  • argsArray : func 이 호출되어야 하는 인수를 지정하는 유사 배열 객체 (인수가 없으면 null, undefined)

이 문제를 apply를 사용해 풀려면 thisArg값이 없기 때문에 Math.min.apply(null, words) 와 같은 방식으로 써주면 된다.

반응형

'Base > 문제풀기' 카테고리의 다른 글

소수(Prime Number)구하기 - Javascript  (0) 2020.12.10

댓글