처음 코딩을 파이썬, 자바로 배웠기 때문에 자바스크립트의 기본 문법을 배우면 배열과 객체를 가르쳐 주고 map 과 set 자료구조는 기본 문법으로 가르쳐주지 않아 자바스크립트에는 map, set의 자료구조가 없나? 라는 의문점이 들었지만 조금씩 자바스크립트를 자세히 공부하다보니 역시 있었다.
그럼 map과 set에 대해서 알아보자.
map 은 key, value 의 짝을 이루어 데이터를 저장 합니다. 엥? 의문이 들수수도 있습니다. 객체도 프로퍼티 key 와 value 로 값을 저장하는데 그럼 객체랑 뭐가 다른거야? 라는 생각이 들수도 있습니다. map 이 객체와 다른점은 객체는 프로퍼티 key 는 문자열로 이루어지고 만약 문자열이 아니라면 자동으로 문자열로 변환하지만 map 은 key 에 다양한 자료형을 사용할 수 있다는 것 입니다. 심지어 객체도 가능 합니다.
map 자료구조를 사용할 때 꼭 알아야 할 메서드에 대해서 알아봅시다.
일단 map을 생성하는 문법은
new map() 으로 map 을 생성 합니다.
map 자료구조는 데이터를 추가하는 순서대로 저장 합니다.
객체를 map 으로 변환 할려면 Object.entries(객체) 를 사용해 map 으로 변환할 수 있습니다. Object.entries(객체) 를 사용하면 [key, value] 형태의 배열로 반환하는데 이 값을 new Map() 인수로 전달하면 map 을 생성할 수 있습니다.
그럼 map 을 객체로 변환은 어떻게 할까요?
Object.fromEntries(map.entries()) 을 사용하면 맵을 객체로 변환할 수 있습니다.
forEach 를 사용할 수 있는데 forEach에 인수로 넘겨받는 콜백 함수 인수를 (value, key, map) 로 인수를 받을 수 있습니다.
set 자료형은 값의 중복을 허용하지 않는 자료구조 입니다. set을 생성하는 문법은 new Set(배열) 을 사용하는 것 입니다.
set 자료구조를 사용할 때 알아야 할 메서드를 알아봅시다.
set 의 값으로는 객체도 저장 가능 합니다.
forEach 함수를 사용할 수 있는데 forEach 에 인수로 넘겨받는 콜백 함수 인수를 (value, valueAgain, set) 로 받을 수 있습니다. 첫번째, 두번째 인수 둘다 같은 값인데 맵과의 호환성을 위해서 이렇게 되어 있다.