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
'자바스크립트 강의' 카테고리의 다른 글
| [JavaScript] 4주차 - 과제 수행 (async, await) (1) | 2024.10.16 |
|---|---|
| [JavaScript] 3주차 - 과제 수행 (불변 객체(얕은 복사), this) (4) | 2024.10.14 |
| [JavaScript] 2주차 - 일급객체로서의 함수 (2) | 2024.10.10 |
| [JavaScript] 2주차 - property shothand, spread operator, rest parameter, template literal (0) | 2024.10.10 |
| [JavaScript] 2주차 - 구조분해할당 (0) | 2024.10.10 |