2) Map, Set
ES6 에서 새롭게 추가된 자료 구조 입니다. 기존 자바스크립트는 배열 이외의 자료구조가 따로 없었으나 이제 다른 언어들 처럼 다양한 자료구조를 사용할 수 있게 되었습니다.
Map과 Set 의 기본적인 개념은 기존언어들과 동일하며 일반적인 자료구조에 대해서는 공통기초->프로그래밍언어개요 를 참고하기 바랍니다.
Map
Map 은 new Map() 으로 선언 하고 map.set()을 이용해 키와 값을 추가 합니다.
자바스크립트의 Map 은 Key:Value 쌍으로 구성된 Object와 비슷한 구조로 볼 수 있지만 다음과 같은 차이가 있습니다.
Object의 키는 문자열이며, Map의 키는 모든 값을 가질 수 있다.
Object는 크기를 수동으로 추적해야하지만, Map은 크기를 쉽게 얻을 수 있다.
Map은 삽입된 순서대로 반복된다.
객체(Object)에는 prototype이 있어 Map에 기본 키들이 있다.
const map = new Map(); map.set("2019101","홍길동"); map.set("2019102","김사랑"); map.set("2019103","강동수"); console.log(map.get("2019101")); map.delete("2019103") console.log(map.has("2019103")); map.forEach((value, key) => console.log(key+" , "+value)); for(let item of map ) { console.log(item[0]+" , "+item[1]); } for(let [key, value] of map ) { console.log(key+" , "+value); } const keys = map.keys(); for(let key of keys) { console.log(map.get(key)); }
forEach 의 인자는 value, key, map object 입니다.
for-of 형태를 사용하는 경우 배열로 키(0), 값(1)이 전달 됩니다.
map.keys()로 키값의 집합인 MapIterator 객체를 받아 for-of 를 이용합니다.