오늘은 항해 알고리즘공부 마지막날 코딩테스트를 친 날이다.
Map, Set에 대한 이해가 아직도 많이 부족하다는 것을 느꼈다. 오늘은 Map에 대해 간단하게 정리하고자 한다.
JavaScript에서 객체(object)
와 배열(array)
을 이용하면 굉장히 다양하고 복잡한 프로그래밍을 할 수가 있습니다. 그럼에도 불구하고 여전히 현실세계의 여러가지 문제들을 ‘프로그래밍’적으로 반영하기엔 많이 부족해요. Map
과 Set
은 이러한 한계를 극복하고자 비교적 최근 등장한 자료구조라고 할 수 있습니다.
이 두 자료 구조는 데이터의 구성, 검색 및 사용을 객체나 배열보다 효율적으로 처리할 수 있기 때문에 많이 각광받고 있어요. 이제 JavaScript에서 Map
과 Set
을 사용하는 방법을 살펴보겠습니다
Map은 키-값 쌍을 저장하는 객체와 비슷합니다. Map은 각 쌍의 키와 값을 저장하며, 객체와 달리 키로 사용할 수 있는 모든 유형을 사용할 수 있습니다. Map은 키가 정렬된 순서로 저장되기 때문에, 추가한 순서대로 반복할 필요가 없습니다. 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
– 요소의 개수를 반환합니다.새로운 Map을 만들려면 Map() 생성자를 사용합니다.
const myMap = new Map();
이제 Map에 값을 추가하려면 set() 메소드를 사용합니다.
myMap.set('key', 'value');
Map에서 값을 검색하려면 get() 메소드를 사용합니다.
console.log(myMap.get('key')); // 'value' 출력
Map에서는 keys(), values(), entries() 메소드를 사용하여 키, 값 및 키-값 쌍을 반복할 수 있습니다.
💡 **[for …of 반복문]**for of
반복문은 ES6에 추가된 새로운 컬렉션 전용 반복 구문입니다. for of
구문을 사용하기 위해선 컬렉션 객체가 [Symbol.iterator]
속성을 가지고 있어야만 합니다(직접 명시 가능).
const myMap = new Map();
myMap.set('one', 1);
myMap.set('two', 2);
myMap.set('three', 3);
for (const key of myMap.keys()) {
console.log(key);
}
// one
// two
// three
for (const value of myMap.values()) {
console.log(value);
}
// 1
// 2
// 3
for (const entry of myMap.entries()) {
console.log(`${entry[0]}: ${entry[1]}`);
}
// one: 1
// two: 2
// three: 3