TIL #84 | [JavaScript] Map 개념과 사용 방법

kibi·2024년 3월 4일
0

TIL (Today I Learned)

목록 보기
81/83

Map은 JavaScript의 자료구조 중 하나로,
데이터의 구성, 검색 및 사용을 객체나 배열보다 효율적으로 처리할 수 있게 한다.

Map

key-value 쌍을 저장한다.
객체와 비슷하나, 객체와 달리 키로 사용할 수 있는 모든 유형을 사용할 수 있다.
하나의 Map에서의 키는 오직 단 하나만 존재한다. (유일성)

Map과 객체의 차이점?

Map과 객체는 유사하다.
key-value의 쌍으로 이루어져있으며 키에 대한 값을 받아올 수 있다.
키를 삭제할 수 있고 무엇이 저장되어 있는지 알 수 있다.
둘은 비슷한 점이 있지만 중요한 차이점이 있다.

우발적 키

Map은 기본적으로 키를 포함하지 않고 객체는 기본 키가 포함되어 있다.

보안

Map은 사용자가 제공하는 키와 값에 대해 안전하게 사용할 수 있다.

객체는 객체 주입 공격이 발생할 수 있다.
공격자가 객체의 프로토타입을 재정의할 수 있다.

키 유형

Map의 키는 모든 값이 될 수 있다.

  • 함수
  • 객체
  • 원시값

객체의 키는 String 또는 Symbol이어야 한다.

Symbol은 생성자가 symbol 원시값을 반환하는 내장 객체이다.
객체에 속성을 추가할 때 고유한 키를 부여하여 다른 코드와 충돌하지 않도록 할 때 쓰인다.

키 순서

Map에서 키는 단순하고 직관적 방식으로 정렬된다.
항목을 삽입한 순서대로 함목, 키 값을 반복한다.

객체의 키는 정렬되어 있지만 항상 그런것은 아니며 순서가 복잡하다.

크기

Map의 아이템의 수는 size 속성에서 쉽게 가져올 수 있다.

객체의 아이템 수는 수동으로 결정해야 한다.

순회

Map은 iterable하기 떄문에 직접 반복할 수 있다.
객체는 for...of문을 사용하여 직접적으로 반복할 수 있다.

iterable(반복 가능한) 객체
배열과 문자열은 대표적인 iterable 객체이다.

성능

Map은 key-value 쌍의 빈번한 추가 및 제거에 최적화되어 있다.

직렬화 또는 파싱

Map은 직력화 또는 파싱에 대한 기본 지원이 없지만
객체는 JSON.Stringify() 와 JSON.parse() 로 기본 지원된다.

Map 사용하기

  1. 새로운 Map 생성하기
    const myMap = new Map();

  2. 값 설정하기
    key를 이용해 value를 저장한다.
    myMap.set(keyString, "value associated with 'a string'");

  3. 값 불러오기
    key에 해당하는 값을 반환한다.
    console.log(myMap.get(keyString));

0개의 댓글