자바스크립트 강의

[JavaScript] 2주차 - Map, Set

notion0896 2024. 10. 11. 11:58

Map은 key- value pair의 객체 형태. 기존 객체와 다른 점은 key값으로 문자열뿐 아니라 어떤 형태가 들어와도 가능!

숫자타입, 불리언타입도 key값으로 들어올 수 있다.

=> 기존 객체 방식
const person = {
  name : "kim",
  age : 31,
  isAdult : true,
};


=> Map() 객체 방식
const myMap = new Map();

myMap.set('name','kim')
myMap.set(31,'age')
myMap.set(ture,'isAdult')

 

이런식으로 기존 객체와 달리 Map()은 키-밸류값이 이렇게 들어와도 상관 없다.

 

Map 객체 안의 key, value, entry 값을 찾아보자

key값 찾기
console.log(myMap.keys()); // [Map Iterator] { 'name', 31, true }
// key 값들의 반복자, 즉 Map의 iterator를 나타냄

for(let key of myMap.keys()){
  console.log(key)
};
// key값들을 하나하나 돌려서 꺼내줌 
// 'name' 31 true


value값 찾기
console.log(myMap.values()); // [Map Iterator] { 'kim', 'age', 'isAdult' }
// value 값들의 반복자, 즉 Map의 iterator를 나타냄

for(let value of myMap.values()){
  console.log(value)
};
// value값들을 하나하나 돌려서 꺼내줌 
// kim age isAdult


entry 값 찾기
console.log(myMap.entries()); // [Map Entries] { [ 'name', 'kim' ], [ 31, 'age' ], [ true, 'isAdult' ] }
// entry 값들의 반복자, 즉 Map의 iterator를 나타냄

for(let entry of myMap.entries()){
  console.log(entry)
};
// entry 하나하나 돌려서 꺼내줌 
// [ 'name', 'kim' ]
[ 31, 'age' ]
[ true, 'isAdult' ]

 

 또한 myMap의 사이즈와 myMap이 어떠한 key값을 갖고있는지 검색할 수 있다.

console.log(myMap.size) // 3
console.log(myMap.has('name')) // true

 


Set은 Map과 다르게 value값만 저장하는 자료구조이다.  값이 중복되지 않는 유일한 요소로만 구성되며, 값이 중복되면 같은 값으로 인식한다.

 

const mySet = new Set();

mySet.add('value1')
mySet.add('value2')
mySet.add('value3')
mySet.add('value4')
mySet.add('value5')

// Set은 value값만을 가지기 때문에 이런 형태로 나타난다.

size 확인
=>
console.log(mySet.size) 
// 5가 나오지만 

mySet.add('value1')
mySet.add('value2')
mySet.add('value3')
mySet.add('value4')
mySet.add('value5')
mySet.add('value5')

console.log(mySet.size) 
// 만약 이렇게 같은 값이 2개 일땐 크기가 6이 아닌 5가 나온다. 중복된 값은 같은 값으로 보기 때문


요소 여부 확인 
=>
console.log(mySet.has('value1')) // true


iterator 확인
=>
for(const value of mySet.values()){
  console.log(value)
}
// value1
value2
value3
value4
value5