코테를 보면서 Map,Set을 활용하는 답안들을 많이 보면서, 도대체 어디에서 map,set을 사용해야 하는지에 대해 궁금했다.
Map
1.자바스크립트의 key-value 쌍으로 이루어진 컬렉션
2.key를 사용해서 get,set,size(중요)알 수 있음
3.key는 중복X
4.key로 사용할 수 있는 자료형이 객체보다 많다
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
map.keys() 키 값만
map.values value 값만
map.entries() - 요소의 [키,값] 엔트리
예시 코드
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 ...
}
Object.entries(해당 객체): 객체를 맵으로 바꾸기
예시코드
let obj = {
name: 'John',
age: 20
}
let map = new Map(Object.entries(obj))
alert(map.get('name'));
Object.formeEntires(해당맵.entries()):맵을 객체로 바꾸기
let map = new Map();
map.set('banana', 1);
map.set('orange', 2);
map.set('meat', 4);
let obj = Object.fromEntries(map.entries()); // 맵을 일반 객체로 변환 (*)
// 맵이 객체가 되었습니다!
// obj = { banana: 1, orange: 2, meat: 4 }
alert(obj.orange); // 2
Set
set 내에 동일한 값이 있다면 중복 제거 첫 방문만 기록