ES2015에서 추가된 새로운 자료구조들 중, 자주 사용될만한 것은 Map, 그리고 Set입니다. 이미 JAVA에서도 Map과 Set을 다룬 적이 있기 때문에, 기본적인 개념은 각각의 아티클을 참고하는 것도 좋을 것 같습니다.
기본적인 개념만 다시 짚어보자면, Map은 K, V 기반의 객체와 유사한 형태이고, Set은 배열과 유사한데 집합의 속성을 갖는 구조라고 생각하면 되겠습니다. 다만 디테일한 속성은 JAVA와 약간의 차이가 있으니, 상세한 특성은 개별적으로 학습하도록 하겠습니다.
○ Map
Map은 기본적으로 속성들 간의 순서를 보장하고, size를 통해서 속성의 수도 파악이 가능합니다. 속성명은 문자열이 아닌 값도 사용할 수 있습니다. 객체이기는 하지만, 일반적인 객체와 특징이 약간 다른 것을 알 수 있습니다.
const m = new Map();
// set(k,v)로 속성 추가
m.set('a', 'b');
// 스트링이 아닌 값을 key로 사용
m.set(3, 'c');
const d = {};
// 객체도 key로 사용 가능
m.set(d, 'e');
console.log(m.get(d));
console.log(m.size);
console.log(m.has(d));
for(const [k, v] of m){
console.log(k, v);
}
m.forEach((v, k) => {
console.log(k, v);
});
m.delete(d);
m.clear();
console.log(m.size);
/* 출력
e
3
true
a b
3 c
{} e
a b
3 c
{} e
0
*/
○ Set
Set은 중복이 허용되지 않는다는 점이 가장 큰 특징입니다. 즉, 이 속성을 사용하게 되면 '배열을 사용하되 중복은 허용하고 싶지 않을 때' 사용할 수 있다는 결론이 나옵니다. 또는, 어떤 배열에서 역으로 '중복을 제거하고 싶을 때'도 사용할 수 있습니다.
const arr = [1, 3, 2, 7, 2, 6, 3, 5];
const s = new Set(arr);
const result = Array.from(s);
console.log(result);
/* 출력
(6) [1, 3, 2, 7, 6, 5]
*/
우선 중복된 3이 삭제되는 시점은, new Set(arr)이 실행되는 시점입니다. 또한, 어떠한 Set 타입을 배열로 되돌리는 방법은 예제에서처럼 Array.from(Set)을 실행하는 것입니다.
'Programming > Node.js' 카테고리의 다른 글
2. Javascript ES2015 (9) - 널 병합/옵셔널 체이닝 [2/2] (6) | 2024.03.05 |
---|---|
2. Javascript ES2015 (9) - 널 병합/옵셔널 체이닝 [1/2] (0) | 2024.03.04 |
2. Javascript ES2015 (7) - async/awiat [2/2] (1) | 2024.02.29 |
2. Javascript ES2015 (7) - async/awiat [1/2] (0) | 2024.02.28 |
2. Javascript ES2015 (6) - 프로미스 [5/5] (0) | 2024.02.26 |