본문 바로가기
JS

Spread, rest 파라미터 연습문제

by 케찹이 2024. 2. 24.

Q1. 아래 코드의 출력 결과는?

var a = [1,2,3];
var b = '김밥';
var c = [...b, ...a];
console.log(c);

 

답:

더보기

['김', '밥', 1, 2, 3]

 

 

Q2. 대괄호가 가득한 아래 코드의 결과는?

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

답:

 

Q3. 아래 코드의 출력 결과는?

function 함수(a = 5, b = a * 2 ){
  console.log(a + b);
  return 10
}
함수(3);

답:

 

Q4. 아래 코드의 출력 결과는?

function 함수(a = 5, b = a * 2 ){
  console.log(a + b);
}
함수(undefined, undefined);

답:

 

Q5. 

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

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

답:

  function 어레이(...파라미터들) {
    return 파라미터들;
  }
  var newArray = 어레이(1, 2, 3, 4, 5, 6, 7, 8);
  console.log(newArray);

 

Q6. 최댓값 Math.max()의 인자가 엄청 길때 어떻게 편이하게 작성할 수 있을까?

답:

더보기
  var numbers = [2, 3, 4, 5, 6, 1, 3, 2, 5, 5, 4, 6, 7];
  console.log(Math.max(...numbers));

 

Q7. 

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

정렬('bear');

 

답:

  function 정렬(word) {
    console.log([...word].sort());
  }

  정렬("bear");

 

Q8. 글자세기['aacbb']라고 입력하면 콘솔창에 {a:2, b:3, c:1}이라고 출력하는 코드를 작성하라.

답:

더보기
  function 글자세기(element) {
    var arr = [...element].sort();
    let o = {};
    for (let i = 0; i < arr.length; i++) {
      if (arr[i] in o) {
        o[arr[i]] = o[arr[i]] + 1;
      } else {
        o[arr[i]] = 1;
      }
    }
    console.log(o);
  }
  글자세기("aacbbb");

 

디버깅:

비어있는 객체를 만들었을 때 예를 들면 let o = {}가 존재할때

새로운 프로퍼티의 키값이 배열에 담겼을 때 예를 들어 var arr = [a, b, c, d] 이럴때 arr의 각 원소를 키값으로 해서 객체 o에 넣어주려고 할때 아래 코드는 작동하지 않는다.

var arr = [a, b, c]
let o = {};
o.arr[1] = 1;

 

구글링해서 찾아본 결과 두가지 경우 점을 사용해서 프로퍼티 추가할때 문제가 발생한다.

1. 속성 키값이 여러 단어로 이뤄져있을 때, ex) "I AM KEY"

2. 변수에 저장된 키를 통해 객체의 속성에 접근할때

 

정리하자면 이런 불편함 때문에 객체에 프로퍼티 접근 또는 추가할때 [ ] 를 사용하자!

'JS' 카테고리의 다른 글

[HTML/CSS/JS] to do list 만들어보기 회고  (0) 2024.02.27
ES6 Promise 연습문제  (0) 2024.02.25
constructor, prototype 연습문제  (0) 2024.02.24
변수 퀴즈  (0) 2024.02.23
this & arrow function 퀴즈  (0) 2024.02.21

댓글