Home [Javascript] HashMap - Map 객체
Post
Cancel

[Javascript] HashMap - Map 객체

해시테이블 (Hash Table)


자료 구조의 종류 중 하나로 key와 value를 가지는 자료구조 형태이다. 배열은 key값에 숫자만 가능하지만, hash table에서는 문자열 또한 key값이 가능하다. hash function을 통해 빠른 탐색O(1)이 가능하다.

해시 함수 (Hash function)


key와 연결되어 있는 value를 삽입, 삭제, 탐색하는 알고리즘 함수이다. key가 들어오면 random하게 주소값을 생성한 후, 해당 주소값에 key와 value를 저장한다.

javascript에서 해시테이블은 대표적으로 Object, Map, Set이 있다. JS에서 key-value로 이루어진 자료구조는 Object가 대표적이었지만, ES6에서 Map과 Set이 추가되었다.

해시테이블 Map


Map 객체

  • key-value로 이루어진 해시 테이블
  • 탐색은 get(key), 삽입은 set(key, value)
  • key는 고유값으로 단 한개만 존재
  • key가능한 자료형: number, string, function, object, NaN

1. Map 객체 생성

1
let map = new Map()

2. Map.set() | 데이터 삽입

1
2
3
4
5
6
map.set(0, 1) // key: 0
map.set('isKey', 2) // key: 'isKey'
map.set({a:1}, 3) // key : {a:1}
map.set(() => {console.log('function')}, 4) // key: () => {console.log('function')}

map.set(0, 3) // 덮어쓰기 가능

3. Map.get() | key값으로 value찾기

1
2
3
4
5
// key값으로 value 찾기
map.get(0) // 1
map.get('isKey') // 2
map.get({a:1}) // 3
map.get(() => {console.log('function')}) // 4

4. Map.has() | key값으로 value유무 확인하기

1
2
3
4
5
6
map.has(0) // true
map.has('isKey') // true
map.has({a:1}) // true
map.has(() => {console.log('function')}) // true

map.has('abc') // false

5. Map.size | Map 크기 확인하기

1
map.size // 4

6. Map.delete() | key값으로 value 삭제하기

1
2
3
4
map.delete(0)
map.delete('isKey')
map.delete({a:1})
map.delete(() => {console.log('function')})

그렇다면 object와 비교했을때 map을 사용하면 좋은 점은 무엇일까?

object보다 map을 사용하면 좋은 이유


  • 더 많은 key의 유형
  • size 사용 가능
  • 더 나은 성능
  • 반복문 사용 가능

위 내용만 보았을 경우에는 object보다 map이 더 많은 장점을 가지고 있는 듯 하지만, 어떤 경우에서는 object가 더 나은 성능을 보일 때도 있다. 따라서 상황에 맞게 적절하게 사용해주는 것이 좋다.

This post is licensed under CC BY 4.0 by the author.

[Nuxt + Typescript] 카카오톡 공유하기 sdk 사용하기

[React + Webpack] 웹팩 세팅 + 빌드하기