Algorithm

해시란? Map과 Object의 차이

채햔 2023. 3. 1. 18:44

해시해시 말은 많이 들어봤지만 정확히 무엇인지 모르겠어서 글로 정리해보고자 한다 !! 

 

해시 테이블이란?

key-value로 이루어져 값을 찾거나, 추가하거나, 제거하는데 빠름(배열보다)

순서가 없음(배열은 index로 순서가 있지만, hash는 아님)

Js에는 Map, Object가 있음(객체에서는 key로 문자열만 사용 가능)

 

  • Object의 키는 Strings이며, Map의 키는 모든 값을 가질 수 있음(객체, 함수도 가능)
  • Object는 크기를 수동으로 추적해야하지만, Map은 크기를 쉽게 얻을 수 있다.(Map.size 속성)
  • Map은 삽입된 순서대로 반복된다.
  • 객체(Object)에는 prototype이 있어 Map에 기본 키들이 있다. (이것은 map = Object.create(null) 를 사용하여 우회할 수 있다. )

출처: https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Keyed_collections

Map 관련 함수

  • new Map(): 새로운 map만들
  • Map.length: 값이 0인 속성
  • Map.size: 맵의 키-값 쌍 갯수
  • Map.clear(): 맵 초기화
  • Map.entries(): 맵의 모든 키-값 쌍을 [key, value] 형태의 array로 만들어서 반환
  • Map.forEach(): 맵의 모든 키-값 쌍에 대해서 콜백함수 사용
  • Map.get(key): key값에 맞는 value값 반환
  • Map.delete(key): key-value 쌍 삭제
  • Map.has(key): 해당 key가 Map에 포함되어 있는지 확인
  • Map.keys(): 맵의 모든 key들을 반환
  • Map.set(key, value): 맵에 key-value 쌍을 집어넣음

* Map에 값을 추가는 방법: set(key, value)

* Object에 값을 추가하는 방법: object["key"] = value