[JavaScript] Map과 Set

Map, Set이란?

데이터의 구성, 검색, 사용을 효율적으로 처리하기 위해 등장한 자료구조

 

Map

key-value 쌍을 저장한다.

set(), get()

Map에 자료를 추가하고, 검색할 수 있는 메서드

const myMap = new Map();
myMap.set('key', 'value');
myMap.get('key');

 

keys(), values(), entries()

Map의 데이터들은 반복하며 동작을 처리하기 위해 사용할 수 있음

const myMap = new Map();
myMap.set("one", 1);
myMap.set("two", 2);
myMap.set("three", 3);

console.log(myMap.keys());  // { 'one', 'two', 'three' }
for (const key of myMap.keys()) {
  console.log(key);
}

// 아래와같이 출력
// one
// two
// three


for(const value of myMap.values()) {
  console.log(value);
}

// 1
// 2
// 3


for(const entry of myMap.entries()) {
  console.log(entry);
}

// [ 'one', 1 ]
// [ 'two', 2 ]
// [ 'three', 3 ]

 

size

map의 길이를 알 수 있다!

console.log(myMap.size);  // 3

 

 

has()

인자로 넘긴 키를 갖고있는지 확인할 수 있음

console.log(myMap.has("two"));  // true

 

 

Set

key를 저장하지 않고, 고유한 value만 저장한다. (중복 X)

 

add()

값을 추가한다. 만약 이미 존재하는 값을 추가하는 경우 추가되지 않는다.

const mySet = new Set();
mySet.add("value1");
mySet.add("value2");
mySet.add("value2");

 

 

size

Set의 길이를 알 수 있다.

console.log(mySet.size);  // 2, value2가 두번 add되었지만 중복된 값은 추가되지 않기에 길이는 2

 

 

has()

인자의 값을 갖고있는지 확인할 수 있다.

console.log(mySet.has("value1");  // true
console.log(mySet.has("value3");  // false

 

 

배열에서 중복 요소 제거하기

set의 중복이 불가하다는 특징을 이용해 배열의 중복 요소를 제거할 수 있다.

const numbers = [1, 1, 1, 2, 3];
console.log([...new Set(numbers)]);  // [1, 2, 3]