Map & Set

CGH96·2022년 12월 29일
0

JS

목록 보기
2/3

Map & Set의 등장

객체 - key: value형태의 컬렉션 저장.
배열 - 순서가 있고 key의 타입이 Number형태의 컬렉션 저장.
하지만 객체와 배열만으로 데이터를 정리하고 표현하는데 한계가 있어서 등장한 것이 MapSet이다.


1.Map

key: value형태로 데이터를 저장한다는 점에서 객체와 유사하다. 하지만 Map은 key에 다양한 자료형을 혀용한다.


1-1. Map의 메서드와 프로퍼티

  • new Map() - 맵 생성
  • Map.set(key, value) - key를 이용해 value 저장
  • Map.get(key) - key에 해당하는 값 반환. key가 없을 시 undefined
  • Map.has(key) - key가 존재한다면 true, 없다면 false
  • Map.delete(key) - key에 해당하는 값을 삭제합니다.
  • Map.clear() - 맵 안의 모든 요소를 제거합니다.
  • Map.size - 요소의 개수를 반환합니다.
  • Map.entries - 요소의 [key, value]을 한 쌍으로 하는 Iterable 객체 반환. for..of의 기초

1-2. Map은 객체와 다르게 키를 문자형으로 변환하지 않는다. 또한 키엔 자료형 제약이 없다.

	let map = new Map();
    map.set('1', 'str1');
    map.set(1, 'num1');
    map.set(true, 'bool1');
    //key의 type이 다르면 그 key들은 다른 것으로 인식한다.

1-3. 주의사항

map[key]는 Map을 사용하는 올바른 방식이 아니다.(가능은 하지만, map을 일반 객체처럼 취급하게 된다.)


1-4. Map은 키로 객체를 허용한다.

let man1 = { name: "CGH" }

let maximumHamburgers = new Map(); //햄버거를 최대 몇 개까지 먹을 수 있는가?

maximumHamburgers.set(man1, 10);

maximumHamburgers.get(man1) 
//output: 10 => name이 CGH인 사람은 햄버거를 최대 10개까지 먹을 수 있다.




2.Set

SetMap과 다르게 중복을 허용하지 않는 값을 모아놓은 컬렉션이다. Set에는 Key가 갖고 있지 않는 값이 저장된다.
Set 내에 동일한 value가 존재한다면 아무리 set.add(value)를 호출하여도 반응이 없다.


2-1. Set의 메서드와 프로퍼티

  • new Set(iterable) - 셋 생성. Iterable객체를 전달 받으면 그 안의 값을 복사해 셋에 넣어준다.
  • set.add(value) - 값을 추가하고 Set자신을 반환
  • set.delete(value) - 값을 제거한다. 호출 시점에 Set 내에 값이 있어서 제거에 성공하면 true, 실패하면 false 반환
  • set.has(value) - Set 내에 값이 존재하면 true, 없다면 false
  • set.clear() - Set을 비움
  • set.size() - Set에 값 개수 반환.
  • Set은 중복을 허용하지 않기 때문에 동일한 값을 add할 경우 반응이 없다.

0개의 댓글