JavaScript - map, set

뭐 그냥 하는거지·2023년 2월 9일
0
post-thumbnail

처음 코딩을 파이썬, 자바로 배웠기 때문에 자바스크립트의 기본 문법을 배우면 배열과 객체를 가르쳐 주고 map 과 set 자료구조는 기본 문법으로 가르쳐주지 않아 자바스크립트에는 map, set의 자료구조가 없나? 라는 의문점이 들었지만 조금씩 자바스크립트를 자세히 공부하다보니 역시 있었다.

그럼 map과 set에 대해서 알아보자.

map

map 은 key, value 의 짝을 이루어 데이터를 저장 합니다. 엥? 의문이 들수수도 있습니다. 객체도 프로퍼티 key 와 value 로 값을 저장하는데 그럼 객체랑 뭐가 다른거야? 라는 생각이 들수도 있습니다. map 이 객체와 다른점은 객체는 프로퍼티 key 는 문자열로 이루어지고 만약 문자열이 아니라면 자동으로 문자열로 변환하지만 map 은 key 에 다양한 자료형을 사용할 수 있다는 것 입니다. 심지어 객체도 가능 합니다.

map 메서드

map 자료구조를 사용할 때 꼭 알아야 할 메서드에 대해서 알아봅시다.
일단 map을 생성하는 문법은
new map() 으로 map 을 생성 합니다.

  • map.set(키, 값) : map 자료구조에 키와 값을 추가할때 사용합니다.
  • map.get(키) : map 자료구조의 값을 가지고 오기 위한 메서드 입니다. 키 값을 인수로 넘겨주면 해당하는 값을 반환 합니다. 만약 map 자료구조에 키가 존재하지 않는다면 undefined 가 반환 됩니다.
  • map.delete(키) : map 자료구조에서 값을 삭제 할때 사용합니다. 삭제에 성공하면 true 를 반환하고 만약 자료구조에 없는 키를 인수로 넘겨준다면 false 를 반환 합니다.
  • map.has(키) : has 메서드에 인수로 키를 넘겨주면 map 자료구조에 있는지 확인하고 있다면 true 를 반환, 없다면 false 를 반환 합니다.
  • map.clear() : map 자료구조의 데이터를 모두 삭제 합니다.
  • map.size : map 의 데이터 개수를 반환 합니다.
  • map.keys() : map 자료구조의 key 를 반복 가능한 객체로 반환 합니다.
  • map.values() : map 자료구조의 value 를 반복 가능한 객체로 반환 합니다.
  • map.entries() : map 자료구조를 [key, value] 반복 가능한 객체로 반환 합니다.

map 자료구조는 데이터를 추가하는 순서대로 저장 합니다.
객체를 map 으로 변환 할려면 Object.entries(객체) 를 사용해 map 으로 변환할 수 있습니다. Object.entries(객체) 를 사용하면 [key, value] 형태의 배열로 반환하는데 이 값을 new Map() 인수로 전달하면 map 을 생성할 수 있습니다.
그럼 map 을 객체로 변환은 어떻게 할까요?
Object.fromEntries(map.entries()) 을 사용하면 맵을 객체로 변환할 수 있습니다.
forEach 를 사용할 수 있는데 forEach에 인수로 넘겨받는 콜백 함수 인수를 (value, key, map) 로 인수를 받을 수 있습니다.

set

set 자료형은 값의 중복을 허용하지 않는 자료구조 입니다. set을 생성하는 문법은 new Set(배열) 을 사용하는 것 입니다.
set 자료구조를 사용할 때 알아야 할 메서드를 알아봅시다.

  • set.add(값) : set 자료구조에 값을 추가할때 사용하는 메서드 입니다. 이미 중복되는 값이 set 자료구조에 있다면 아무일도 일어나지 않습니다.
  • set.delete(값) : set 자료구조에 값을 삭제할때 사용합니다. 인수로 전달되는 값이 set 에 있다면 true 를 반환하고 없다면 false 를 반환 합니다.
  • set.has(값) : set 자료구조에 값이 있는 확인할때 사용 합니다. 값이 있다면 true 를 없다면 false 를 반환 합니다.
  • set.clear() : set 자료구조에 저장된 모든 값을 삭제 합니다.
  • set.size : set 자료구조의 저장된 값의 개수를 반환 합니다.
  • set.keys() : set 자료구조의 모든 값을 이터러블 객체로 반환 합니다.
  • set.values() : set 자료구조의 모든 값을 이터러블 객체로 반환 합니다.
  • set.entries() : set 자료구조의 값을 [value, value] 배열을 포함하는 이터러블 객체로 반환 합니다.
    맵과 호환성을 위해 위와 같이 키, 값으로 데이터 저장 방식이 되어 있지 않지만 만들어 졌습니다.

set 의 값으로는 객체도 저장 가능 합니다.

forEach 함수를 사용할 수 있는데 forEach 에 인수로 넘겨받는 콜백 함수 인수를 (value, valueAgain, set) 로 받을 수 있습니다. 첫번째, 두번째 인수 둘다 같은 값인데 맵과의 호환성을 위해서 이렇게 되어 있다.

0개의 댓글