[JS & ES6 신문법 학습] Spread, rest 파라미터 연습문제 8개

김범기·2024년 7월 11일

JAVASCRIPT

목록 보기
14/38
  1. spread 문제 1
var a = [1,2,3];
var b = '김밥';
var c = [...b, ...a];
console.log(c);
위 코드의 출력 결과는?

c = ['김', '밥', 1, 2, 3] 이 되므로 ['김', '밥', 1, 2, 3]가 출력된다.


  1. spread 문제 2
var a = [1,2,3];
var b = ['you', 'are'];
var c = function(a,b){
  console.log( [[...a], ...[...b]][1] )
}
c(a,b);

대괄호가 가득한 위 코드의 출력 결과는?

[[1,2,3], 'you', 'are'] 이 되는데 여기서 [1]을 출력해야하므로 'you'가 출력된다.


  1. default 파라미터 문제 1
function 함수(a = 5, b = a * 2 ){
  console.log(a + b);
  return 10
}
함수(3);

위 코드의 출력 결과는?

a=3으로 입력이 되었고, b는 default로 인해 a*2가 되므로 a = 3, b = 6이 된다.
console.log()에 의한 출력결과는 9
반환값은 10이 된다.


  1. default 파라미터 문제 2
function 함수(a = 5, b = a * 2 ){
  console.log(a + b);
}
함수(undefined, undefined);

위 코드의 출력 결과는?

undefined로 입력을 시켰지만 입력하지 않은 것이나 마찬가지이므로 default값을 진행시키고, a= 5, b=10의 결과로 15가 출력된다.


  1. array를 만들어주는 함수를 제작하고 싶습니다.

실용성은 0이지만 일단 해보도록 합시다.

파라미터로 자료들을 입력하면 그걸 그대로 array를 만들어주는 함수를 만들고 싶습니다.

function 어레이(){
  (여기 어떤코드가 들어가면 될까요?)
}

var newArray = 어레이(1,2,3,4,5);
console.log(newArray); 

이렇게 작성하면 [1,2,3,4,5]가 출력되어야합니다.

함수에 숫자를 100개 집어넣으면 Array안에 숫자100개가 들어가야하고요.

어레이라는 함수를 어떻게 만들면 될까요? (new 키워드 사용금지)

function 어레이(...파라미터들){
  return 파라미터들
}

var newArray = 어레이(1,2,3,4,5);
console.log(newArray); 

이런 식으로 작성해주면 [1,2,3,4,5]가 출력된다.


  1. 최댓값 구하기

자바스크립트에서 최댓값을 구하고 싶으면.. Math.max()라는 기본 내장함수를 쓸 수 있습니다.

Math.max(5,6,4,3)
이렇게 쓰시면 6이라고 최댓값을 출력해줍니다. 그냥 소괄호 안에 있는 모든 숫자 중에 가장 큰 숫자를 퉤 뱉는다는 소리입니다.

근데 최댓값을 검사하고 싶은 숫자들이 좀 많습니다.

var numbers = [2,3,4,5,6,1,3,2,5,5,4,6,7];
numbers 안에 있는 숫자들을 Math.max()에 집어넣어서 쓰고 싶은데

직접 소괄호 안에 10개넘는 숫자를 손수 기입하기 귀찮습니다.

이럴 땐 어떻게 코드를 짜면 좋을까요?

var numbers = [2,3,4,5,6,1,3,2,5,5,4,6,7];

console.log(Math.max(...numbers))

이런식으로 spread operator를 사용하면 된다.


  1. 글자를 알파벳순으로 정렬해주는 함수를 만들고 싶습니다.

일단 자바스크립트는 array 내의 데이터를 알파벳순으로 정렬하고 싶을 때

sort()라는 array 내장함수를 붙여 사용합니다. (array에만 적용가능)

console.log( [ 'b', 'c', 'a' ].sort() );

//[ 'a', 'b', 'c' ] 출력됨
이렇게 sort()만 붙이면 쉽게 정렬이 가능합니다. 끝입니다.

그런데 우리는 array가 아니라 문자열에도 적용할 수 있는 알파벳순 정렬함수를 하나 만들고 싶습니다.

function 정렬(){
(여기 어떤 코드가 들어가야할까요?)
}

정렬('bear');
정렬('bear')라고 사용하면

콘솔창에 a b e r 이렇게 입력한 문자를 알파벳 순으로 출력되게 만들고 싶으면 어떻게 해야할까요?

(sort() 함수 사용가능)

function 정렬(param){
  return [...param].sort()
}

console.log(...정렬('bear')) 

문자열을 리스트화해서 정렬시켜주고, spread operator를 통해서 문자열화 시켜주면 된다.


  1. 데이터마이닝 기능 만들기

데이터분석 하는 사람들이 자주 만들어 쓰는 함수가 있습니다.

알파벳들의 출현 갯수를 세어주는 함수입니다. 우리도 한번 만들어봅시다.

글자세기('aacbbb') 라고 입력하면 콘솔창에

{ a : 2, b : 3, c : 1 }

▲ 이렇게 출력해주는 글자세기() 라는 함수를 만들고 싶습니다.

쉽게말하자면 입력한단어에 들어있는 알파벳의 갯수를 세어서 오브젝트에 기록해주고 출력까지 해주는 함수입니다.

글자세기라는 함수를 어떻게 만들면 될까요?

spread operator를 이용해서 문자열을 리스트화 해주고 이를 반복문을 이용해 object에 갯수를 입력해주었다.
아래처럼 해주니 해결되었다.

function 글자세기(param){
  let object = {}
  let p_list = [...param]
  for (let i = 0; i < p_list.length; i++) {
    if(object[p_list[i]]){
      object[p_list[i]] += 1
    }else{
      object[p_list[i]] = 1
    }
  }
  return object
}

console.log(글자세기('aacbbb'))

profile
반드시 결승점을 통과하는 개발자

0개의 댓글