Map 과 Set 은 ES2015에서 새롭게 추가된 자료구조들이다.
Map 은 객체와 유사하고 Set 은 배열과 유사하다고 생각하면 된다.
const m = new Map();
m.set('a','b'); // set(키,값)으로 Map에 속성 추가
m.set(3,'c'); // 문자열이 아닌 값을 키로 사용 가능
const d = {};
m.set(d,'e'); // 객체도 가능
m.get(d); //get(키) 로 속성값 조호;
console.log(m.get(d)); // e
m.size; // size로 속성 개수 조회
console.log(m.size); // 3
for (const[k,v] of m) { //반복문에 바로 넣어 사용 가능
console.log(k,v); // 'a', 'b', 3, 'c', {}, 'e'
} // 속성간 순서도 보장
m.foreach((v,k) => { // foreach도 사용 가능
console.log(k,v) // 결과는 위와 동일
});
속성값을 불러올때 같은 값을 사용하면 불러올 수 있다.
이때 조심해야할것은 키값이 객체일때다!
{a: 'b'} !== {a: 'b'}
=> true
위처럼 같아보인다고 같지 않으므로
const obj = {key: 'key'};
m.set(obj,123);
m.get(obj);
맵에서 객체를 키값으로 사용할 경우 객체를 선언한 후 사용해야한다.
m.has(d); // has(키)로 속성 존재 여부를 확인
console.log(m.has(d)); // true
m.delete(d); // delete(키)로 속성을 삭제
m.clear(); // clear()로 전부 제거
Set은 배열과 비슷하지만, 중복을 허용하지 않는다.
const s = new Set();
s.add(1); // {1}
s.add(1); // {1}
s.add(2); // {1,2}
s.add('1'); // {1,2,'1'}
// 완전 같은 값은 중복되지않는다 (같은 타입)
그래서 중복이면 안되는 배열 또는 기존 배열이 있고 중복을 제거하고싶을때 쓴다.
const arr = [1,2,3,2,3,5,2];
const s2 = new Set(arr);
console.log(s2); // {1,2,3,5}
Array.from(s2); // [1,2,3,5]
'JavaScript' 카테고리의 다른 글
| [JavaScript] ??(널 병합)연산자와 ?.(옵셔널 체이닝)연산자 (1) | 2023.11.09 |
|---|---|
| [JavaScript] WeakMap/WeakSet (1) | 2023.11.08 |
| [JavaScript] onClick, addEventListener 이벤트 비교 (0) | 2023.09.30 |
| [JavaScript] Ajax (0) | 2023.09.18 |
| [JavaScript] indexOf - 특정 문자(요소) 위치 찾기 (1) | 2023.09.03 |