Angry Stock 2023. 11. 28. 16:02
반응형

JavaScript에서 해시맵(HashMap)은 데이터를 키-값 쌍으로 저장하고 효율적으로 검색, 삽입, 삭제를 할 수 있는 자료구조입니다. JavaScript의 Object 또는 Map 객체가 해시맵의 역할을 수행합니다. Map 객체는 ES6부터 도입된 더 정교한 해시맵 구현입니다.

Object를 사용한 해시맵

JavaScript의 일반 객체({})는 간단한 해시맵으로 사용될 수 있습니다. 키는 문자열이나 심볼이 되며, 값을 저장하고 검색하는데 사용됩니다. 다만, 키가 문자열 또는 심볼로 제한되어 있다는 점과, 객체의 프로토타입 상속으로 인해 예상치 못한 키 충돌이 발생할 수 있다는 단점이 있습니다.

예시 코드:

let hashMap = {};

// 값 저장
hashMap["key1"] = "value1";
hashMap["key2"] = "value2";

// 값 검색
console.log(hashMap["key1"]); // "value1"
console.log(hashMap["key2"]); // "value2"

// 키 존재 여부 확인
console.log("key1" in hashMap); // true
console.log("key3" in hashMap); // false

// 키-값 쌍 삭제
delete hashMap["key1"];
console.log("key1" in hashMap); // false

Map 객체를 사용한 해시맵

Map 객체는 키-값 쌍을 저장하는 데 사용되며, 키에 다양한 자료형(문자열, 숫자, 객체 등)을 사용할 수 있습니다. Map은 순서를 유지하며, 키의 중복을 허용하지 않습니다. 또한, Map은 메모리에서 키에 대한 참조를 유지하지 않으므로 메모리 누수의 위험이 적습니다.

예시 코드:

let map = new Map();

// 값 저장
map.set("key1", "value1");
map.set("key2", "value2");

// 값 검색
console.log(map.get("key1")); // "value1"
console.log(map.get("key2")); // "value2"

// 키 존재 여부 확인
console.log(map.has("key1")); // true
console.log(map.has("key3")); // false

// 키-값 쌍 삭제
map.delete("key1");
console.log(map.has("key1")); // false

// 순회
map.forEach((value, key) => {
    console.log(key + ": " + value);
});

Map 객체는 이터러블이기 때문에 forEach 메서드나 for...of 루프를 사용하여 요소들을 순회할 수 있습니다. 이러한 특성은 Object와 비교했을 때 Map이 더욱 유연하고 강력한 해시맵 구현을 제공한다는 것을 의미합니다.

 

hash 탐색 : for-of 문

//key, value 쌍으로 출력
for (let [key, value] of map) {
  console.log(key + ' = ' + value)
}

//key만 출력
for (let key of map.keys()) {
  console.log(key)
}

//value만 출력
for (let value of map.values()) {
  console.log(value)
}

 

1) Map.length: 값이 0인 속성.

2) Map.size: 맵의 키-값 쌍 갯수

3) Map.clear(): 맵 초기화

4) Map.entries(): 맵의 모든 키-값 쌍을 [key, value] 형태의 array로 만들어서 반환

5) Map.forEach(): 맵의 모든 키-값 쌍에 대해서 콜백함수 사용

6) Map.get(key): key값에 맞는 value값 반환

7) Map.delete(key): key-value 쌍 삭제

8) Map.has(key): 해당 key가 Map에 포함되어 있는지 확인

9) Map.keys(): 맵의 모든 key들을 반환

10) Map.set(key, value): 맵에 key-value 쌍을 집어넣음

반응형