[개발지식공유] 자료구조_map/set

이나현·2022년 10월 27일
0

오라운드

목록 보기
3/18
post-thumbnail
  • 기존에 알고 있었던 자료구조 (1)객체 - 키가 있는 컬렉션을 저장
    • 객체의 키는 type이 string, symbols, integer 밖에 안됨

    • 데이터의 순서가 없음

      (2) 배열(array) - 순서가 있는 컬렉션을 저장

- map 과 set은 키기반의 컬렉션

1. map

(1) 공부 배경

  • 2depth로 옵션 데이터 구조 변경을 프론트에 반영하려고 mobx store 보던 중에, 아래와 같은 코드를 보았다.
  • 저기서 this._shouldSelectedOptions의 type을 보았더니 [observable.map](http://observable.map) 이라는 내용이 나왔다.
this._shouldSelectedOptions.set(optionGroup.optionTypeCode, {
      ...optionGroup,
      optionItems: [optionItem]
    }); 
  • .set, .get, .has 등의 내장 메서드를 사용하는데 해당 내용이 무엇인지 궁금했다.

(2) 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 – 요소의 개수를 반환합니다.

(참조: https://ko.javascript.info/map-set)

맵과 셋

(3) advanced 기능

  • 객체를 맵으로 바꾸기 : Object.entries(obj) 필요
  • 맵을 객체로 바꾸기: Object.fromEntries(map) 필요

2. set

  • 중복이 없는 값을 저장

⇒ 중복값 여부 체크일 때 array.find 보다 성능 면에서 좋음

  • 주요 메서드와 프로퍼티
new Set(iterable) – 셋을 만듭니다. 이터러블 객체를 전달받으면(대개 배열을 전달받음) 그 안의 값을 복사해 셋에 넣어줍니다.
set.add(value) – 값을 추가하고 셋 자신을 반환합니다.
set.delete(value) – 값을 제거합니다. 호출 시점에 셋 내에 값이 있어서 제거에 성공하면 true, 아니면 false를 반환합니다.
set.has(value) – 셋 내에 값이 존재하면 true, 아니면 false를 반환합니다.
set.clear() – 셋을 비웁니다.
set.size – 셋에 몇 개의 값이 있는지 세줍니다.
profile
technology blog

0개의 댓글