2차 공부/TIL

24.06.21 Map

공대탈출 2024. 6. 21. 15:21

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

 

배열과도 병합이 가능하며, 이 또한 마지막 키 값을 따라 유일성을 유지한다.