∙ 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 : 요소의 개수를 반환합니다.
let john = { name: "John" };
let visitsCountObj = {}; // 객체를 하나 만듭니다.
visitsCountObj[john] = 123; // 객체(john)를 키로 해서 객체에 값(123)을 저장해봅시다.
// 원하는 값(123)을 얻으려면 아래와 같이 키가 들어갈 자리에 `object Object`를 써줘야합니다.
alert( visitsCountObj["[object Object]"] ); // 123
맵의 각 요소에 반복 작업이 가능하다.
∙ map.keys() : 각 요소의 키를 모은 반복 가능한(iterable, 이터러블) 객체를 반환합니다.
∙ map.values() : 각 요소의 값을 모은 이터러블 객체를 반환합니다.
∙ map.entries() : 요소의 [키, 값]을 한 쌍으로 하는 이터러블 객체를 반환합니다. 이 이터러블 객체는 for..of반복문의 기초로 쓰입니다.
let recipeMap = new Map([
['cucumber', 500],
['tomatoes', 350],
['onion', 50]
]);
// 키(vegetable)를 대상으로 순회합니다.
for (let vegetable of recipeMap.keys()) {
alert(vegetable); // cucumber, tomatoes, onion
}
// 값(amount)을 대상으로 순회합니다.
for (let amount of recipeMap.values()) {
alert(amount); // 500, 350, 50
}
// [키, 값] 쌍을 대상으로 순회합니다.
for (let entry of recipeMap) { // recipeMap.entries()와 동일합니다.
alert(entry); // cucumber,500 ...
}
forEach
도 가능하다. 이를 통해 객체를 맵으로 변경할 수 있다.
// 각 요소가 [키, 값] 쌍인 배열
let map = new Map([
['1', 'str1'],
[1, 'num1'],
[true, 'bool1']
]);
alert( map.get('1') ); // str1
맵을 객체로 바꾸는 방법
[키, 값]
쌍인 배열을 객체로 바꿔줌let prices = Object.fromEntries([
['banana', 1],
['orange', 2],
['meat', 4]
]);
// now prices = { banana: 1, orange: 2, meat: 4 }
alert(prices.orange); // 2
∙ new Set(iterable) : 셋을 만듭니다. 이터러블 객체를 전달받으면(대개 배열을 전달받음) 그 안의 값을 복사해 셋에 넣어줍니다.
∙ set.add(value) : 값을 추가하고 셋 자신을 반환합니다.
∙ set.delete(value) : 값을 제거합니다. 호출 시점에 셋 내에 값이 있어서 제거에 성공하면 true, 아니면 false를 반환합니다.
∙ set.has(value) : 셋 내에 값이 존재하면 true, 아니면 false를 반환합니다.
∙ set.clear() : 셋을 비웁니다.
∙ set.size : 셋에 몇 개의 값이 있는지 세줍니다.
for..of
와 forEach
가 가능하다. ∙ set.keys() : 셋 내의 모든 값을 포함하는 이터러블 객체를 반환합니다.
∙ set.values() : set.keys와 동일한 작업을 합니다. 맵과의 호환성을 위해 만들어진 메서드입니다.
∙ set.entries() : 셋 내의 각 값을 이용해 만든 [value, value] 배열을 포함하는 이터러블 객체를 반환합니다. 맵과의 호환성을 위해 만들어졌습니다.