Map
- Map은 객체와 유사한 자료구조
const m = new Map();
m.set('a','b'); // key: a , value: b로 Map속성에 추가
m.get(a) // get으로 a의 값 조회
m.size; // size로 속성의 개수 조회
m.has(a); //has로 속성 존재 여부 확인, a를 가지고 있으면 true, 없으면 false
m.delete(a); //delete로 속성을 삭제
m.clear;//clear()로 전부제거
Set
- Set은 배열과 유사한 자료구조
- 배열을 완전히 대체하기 힘듬 -> 왜? 중복을 허용하지 않기 때문
- 따라서 기존 배열의 중복을 제거할 때도 사용
const s = new Set();
s.add(false); //add(요소)로 Set에 추가합니다
s.add(1);
s.add('1');
s.add(1); // 중복이므로 무시됨
s.add(2);
console.log(s.size);// 무시된 것 제외하고 4
s.has(1); // 1을 가지고 있으므로 true
for (const a of s) {
console.log(a); // false 1 '1' 2
}
s.forEach((a) => {
console.log(a); // false 1 '1' 2
})
s.delete(2); //delete로 속성을 삭제
s.clear;//clear()로 전부제거
중복을 제거하고 싶을 때
const arr = [1,3,2,7,2,6,3,5];
const s = new Set(arr); //배열을 Set에 넣어 중복제거
const result = Array.from(s); //다시 배열로 만들기
console.log(result); // 1, 3, 2, 7, 6, 5
WeakMap
- 객체만을 키로 허용하는 특별한 종류의 Map
- 키가 가비지 컬렉션(garbage collection)에 의해 사라질 수 있게 해주는 특징을 가지고 있음
- WeakMap은 가지고 있는 요소 전체를 반복 구문으로 탐색할 방법이 없음
- 즉, WeakMap은 키가 사라지면 그에 연결된 값도 함께 사라지는 특징을 가지고 있음. 이러한 특성 때문에 메모리 누수를 방지하는데 유용
const wm = new WeakMap();
let obj = {}
wm.set(obj3, '123)
obj = null; //Garbage Collecting이 되면서 '123'도 같이 사라짐
WeakSet
- Set의 weak 버전
-
키가 가비지 컬렉션(garbage collection)에 의해 사라질 수 있게 해주는 특징을 가지고 있음
'Node' 카테고리의 다른 글
노드 내장 객체(global, console, 타이머) (0) | 2024.01.28 |
---|---|
다이나믹 임포트 (0) | 2024.01.24 |
for await(변수 of 프로미스 배열) (0) | 2024.01.24 |
async function (0) | 2024.01.24 |
프로미스 (0) | 2024.01.24 |