자바스크립트에서 해쉬 테이블(해쉬 맵)은 Object가 대표적이지만, 다른 프로그래밍 언어에 존재하는 해쉬 테이블의 종류인 Map, Set 또한 ES6 이후 자바스크립트에 추가가 되었다.
객체 = 키가 있는 컬렉션을 저장함
배열 = 순서가 있는 컬렉션을 저장함
https://ko.javascript.info/map-set
자바스크립트의 key-value 페어(pair) 로 이루어진 컬렉션
키가 있는 데이터를 저장한다는 점에서 객체와 유사하지만, 맵은 키에 다양한 자료형을 허용 (객체, NaN가능)
key 들은 중복될 수 없음
하나의 key 에는 하나의 value 만 저장
삽입 순서 유지
map[key]
는 잘못된 Map 의 사용법
// 생성
let map = new Map()
// 기본 사용
map.set(key, value).set(key, value) // key를 이용해 value 저장, 체이닝 가능
map.get(key) // key에 해당하는 값|undefined 반환
map.delete(key) // key에 해당하는 값 삭제
map.clear() // 맴 안의 모든 요소 제거
map.has(key) // true|false 반환
map.size // 요소의 개수 반환
// Map의 각 요소에 반복 작업
map.keys() // 각 요소의 키를 모은 반복 가능한(이터러블) 객체 반환
map.values() // 각 요소의 값을 모은 이터러블 객체 반환
map.entries() // 요소의 [키,값]을 한 쌍으로 하는 이터러블 객체({}) 반환, for..of 반복문의 기초로 쓰임
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
중복을 허용하지 않는 값을 모아놓은 특별한 컬렉션
키가 없는 값이 저장 됨
// 생성
let set = new Set()
// 기본 사용
set.add(value) // 값을 추가하고 Set 자신 반환
set.delete(value) // Set 내에 값이 있어 제거에 성공하면 true|false 반환
set.clear() // Set 비움
set.has(value) // true|false 반환
set.size // Set에 있는 값의 개수 반환
// Set의 각 요소에 반복 작업
set.values() // Set의 모든 요소를 지닌 새로운 이터레이터(Iterator) 객체를 반환.
set.entries() // 요소의 [값,값]을 한 쌍으로 하는 이터러블(Iterable) 객체({}) 반환, for..of 반복문의 기초로 쓰임
// value에 배열 넣는 경우
let set = new Set();
set.add([1,2,3]);
set.add([3,4,5]);
set.add([3,4,5]);
// Set(3) {Array(3), Array(3), Array(3)}