Map 객체는 키-값 쌍인 집합이다. 한 Map에서의 키는 오직 단 하나만 존재한다. 이를 Map의 유일성이라 한다.
Map은 다른 객체들과 동일해 보인다. 또한 객체와 비슷한 방법으로 데이터를 넣을 수도 있다.
const wrongMap = new Map();
wrongMap['wrong'] = 'wrongMap!'
console.log(wrongMap); // Map { wrong: 'wrongMap!' }
객체 형식으로도 데이터를 넣을 수도 있지만, Map이 제공하는 메서드로 접근할 순 없다.
const wrongMap = new Map();
wrongMap['wrong'] = 'wrongMap!'
console.log(wrongMap); // Map { wrong: 'wrongMap!' }
wrongMap.has('wrong'); //false
wrongMap.delete('wrong'); //false
console.log(wrongMap); // Map { wrong: 'wrongMap!' }
따라서 Map에 데이터를 저장하는 올바른 방법은 set(key, value)메서드를 사용하는 것이다.
const map = new Map();
map.set('jiwoo', { phoneNum: "010-0000-0000", address: "경기도 성남시 수정구" });
map.has('jiwoo'); //true
map.get('jaewoo'); //undefined
map.set('giwon', { phoneNum: "010-1111-1111", address: "서울특별시 송파구 올림픽로 300" });
map.get('jiwoo'); //{ phoneNum: "010-0000-0000", address: "경기도 성남시 수정구" }
map.delete('sangwoo'); //false
map.delete('giwon'); //true
console.log(map); //1
//Map() 새로운 Map객체 생성
const graduationMap = new Map()
new Map()으로 새로운 Map 객체를 생성한다.
map.size; //1
map.size로 해당 Map객체의 크기를 리턴한다. 배열의 length속성과 비슷
map.clear()
map.delete('삭제하려는 값')
map.get('찾으려는 값')
map.has('가지고있는지 판단하려는 값')
map.set('설정하려는 키', '설정하려는 밸류')
map.keys() //해당 맵의 모든 key를 삽입순서에 따라 객체형식에 넣어 보여줌
map.values() //해당 맵의 모든 value를 삽입순서에 따라 객체 형식에 넣어 보여줌
map.entries() //해당 맵의 key=>value 형태로 삽입순서에 따라 객체 형식에 넣어 보여줌
map은 for...of로 순회할 수 있다.
const nums = new Map();
nums.set(0, 'zero');
nums.set(1, 'one');
for (const [key, value] of nums) {
console.log(`${key} = ${value}`)
}
// 0 = zero
// 1 = one
for (const key of nums.keys()) {
console.log(key)
}
// 0
// 1
for (const value of nums.values()) {
console.log(value)
}
// zero
// one
또한 forEach도 사용가능하다.
const nums = new Map();
nums.set(0, 'zero');
nums.set(1, 'one');
nums.forEach((value, key) => {
console.log(`${key} = ${value}`
})
// 0 = zero
// 1 = one
위에서 Map은 유일성을 가진다 하였다. Map끼리도 병합이 가능한데 이때 유일성을 유지한채로 병합한다.
또한 키 값이 중복될 경우 마지막 키 값을 따른다.
const first = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
]);
const second = new map([
[1, 'uno'],
[2, 'dos'],
])
const mergedMap = new Map([...first, ...second])
console.log(mergedMap.get(1)); //uno
console.log(mergedMap.get(2)); //dos
console.log(mergedMap.get(3)); //three
배열과도 병합이 가능하며, 이 또한 마지막 키 값을 따라 유일성을 유지한다.
'2차 공부 > TIL' 카테고리의 다른 글
24.06.24 리액트의 Batching이란 무엇인가 (0) | 2024.06.24 |
---|---|
24.06.21 TodoList 페이지 기능추가하기 (0) | 2024.06.21 |
24.06.20 리액트로 TodoList 관리 페이지 만들기 (0) | 2024.06.20 |
24.06.19 할 일 목록 만들기 코드 리팩토링 (0) | 2024.06.19 |
24.06.18 할 일 목록 만들기 (0) | 2024.06.18 |