객체는 propery name 을 통해 이름이 있는 여러 값들을 묶을 때 활용할 수 있고,

배열은 index 를 통해 순서가 있는 여러 값들을 묶을 때 유용하게 활용할 수 있다.

ES2015에서 객체와 비슷한 Map , 배열과 비슷한 Set 이라는 데이터 구조가 생겨 어떤 특징이 있는지 알아보자

Map


데이터를 저장하는 점에서 객체와 비슷하지만 할당연산자를 통해 값을 추가하고 점 표기법이나 대괄호 표기법으로 접근하는 일반 객체와 다르게

Map 은 메서드를 통해서 값을 추가하거나 접근할 수 있다.

new 키워드를 이용 Map 을 만들 수 있고 메서드를 통해 Map 안의 여러 값들을 다룰 수 있다.

  1. map.set(key.value) : key를 이용해 value를 추가하는 메서드
  2. map.get(key) : key에 해당하는 값을 얻는 메서드 key가 존재하지 않으면 undefined 를 반환
  3. map.has(key) : key가 존재하면 true , 아니면 false 를 반환
  4. map.delete(key) : key에 해당하는 값을 삭제하는 메서드
  5. map.clear() : Map 안의 모든 요소를 제거하는 메서드
  6. map.size : 요소의 개수를 반환하는 프로퍼티 (메서드가 아님) 배열의 length 같은 역할
 // Map 생성
const codeit = new Map();

// set 메소드
codeit.set('title', '문자열 key');
codeit.set(2017, '숫자형 key');
codeit.set(true, '불린형 key');

// get 메소드
console.log(codeit.get(2017)); // 숫자형 key
console.log(codeit.get(true)); // 불린형 key
console.log(codeit.get('title')); // 문자열 key

// has 메소드
console.log(codeit.has('title')); // true
console.log(codeit.has('name')); // false

// size 프로퍼티
console.log(codeit.size); // 3

// delete 메소드
codeit.delete(true);
console.log(codeit.get(true)); // undefined
console.log(codeit.size); // 2

// clear 메소드
codeit.clear();
console.log(codeit.get(2017)); // undefined
console.log(codeit.size); // 0

Set


여러 개의 값을 순서대로 저장한다는 점에서 배열과 비슷하다.