@ 객체(object)와 배열(array)을 이용하면 다양하고 복잡한 프로그래밍을 할 수 있다. But 현실세계의 여러가지 문제들은 프로그래밍으로 반영하기엔 많이 부족하다. Map과 Set은 이런 한계를 극복하고자 최근 등장한 자료구조다. 두 자료 구조는 데이터의 구성, 검색 및 사용을 객체나 배열보다 효율적으로 처리할 수 있다.
1. Map
==> Map은 Key-Value를 저장하는 객체와 비슷하다. 각 쌍의 Key와 Value를 저장하며, 객체와 달리 Key로 사용할 수 있는 모든 유형을 사용할 수 있다. Map은 Key가 정렬된 순서로 저장되기 때문에, 추가한 순서대로 반복할 필요가 없다.
@ 기능
<Map 생성 및 사용>
- new Map() - 맵을 만든다.
- map.set(key, value) - key를 이용해 value를 저장한다.
- map.get(key) - key에 해당하는 값을 반환한다. key가 존재하지 않으면 undefined를 반환
const myMap = new Map() //새로운 Map생성
myMap.set('key', 'value') //Map에 값을 추가
console.log(myMap.get('key')) //'value' 출력
<Map의 크기 및 존재 여부 확인>
- map.has(key) - key가 존재하면 true, 존재하지 않으면 false를 반환
- map.size - 요소의 개수를 반환한다.
const myMap = new Map()
myMap.set('one',1)
myMap.set('two',2)
myMap.set('three',3)
console.log(myMap.size) //map의 사이즈(길이)
console.log(myMap.has('two')) //key 기반 검사 true
console.log(myMap.has('two1')) //false
- map.delete(key) - key에 해당하는 값을 삭제
- map.clear() - 맵 안의 모든 요소를 제거한다.
<Map의 반복>
==> keys(), values(), entries() 메소드를 사용하여 key, value, key-value를 반복할 수있다.
==> for~of 반복문을 이용하여 반복을 한다. for~of에서 가장 중요한 것은 iterator속성이다. 컬렉션 객체가 [Symbol.iterator] 속성을 가지고 있어야 for~of를 사용할 수 있다. iterator는 반복자며 요소 하나하나를 반복할 수 있도록 배열 도는 객체와 비슷한 형태로 열거되어있는 자료구조로 이해하는게 좋다.
const myMap = new Map()
myMap.set('one',1)
myMap.set('two',2)
myMap.set('three',3)
console.log(myMap.keys()) //[Map Iterator] { 'one', 'two', 'three' }
for (const key of myMap.keys()) {
console.log(key) // one two three
}
console.log(myMap.values()) //[Map Iterator] { 1, 2, 3 }
for (const value of myMap.values()) {
console.log(value) // 1 2 3
}
console.log(myMap.entries()) //[Map Entries] { [ 'one', 1 ], [ 'two', 2 ], [ 'three', 3 ] }
for (const entry of myMap.entries()){
console.log(entry) // [ 'one', 1 ] [ 'two', 2 ] [ 'three', 3 ]
}
2. Set
==> 고유한 값을 저장하는 자료 구조. value만 저장하며, key를 저장하지 않는다. 값이 중복되지 않는 유일한 요소로만 구성된다.
@ 기능
<Set 생성 및 사용>
- value 추가 및 검색
const mySet = new Set() // Set() 생성
mySet.add('value1') // add()로 저장한다.
mySet.add('value2')
mySet.add('value2') // 중복되는게 있다면 1개만 저장
mySet.add('value3')
mySet.add('value4')
mySet.add('value5')
console.log(mySet.has('value1')) //true
console.log(mySet.has('value2')) //true
console.log(mySet.has('value3')) //false
- value 삭제
- 모든 value 제거
<Set의 크기 및 존재 여부 확인>
- Set 크기 및 존재 여부 확인
console.log(mySet.size)
<Set의 반복>
// Iterator
for(const value of mySet.values()) {
console.log(value)
}
'JavaScript Dev. > Javascript' 카테고리의 다른 글
2023.04.15 - Number vs. parseInt (1) | 2023.04.15 |
---|---|
2023.04.12 - <2주차 과제> (0) | 2023.04.12 |
2023.04.05 - <1주차 과제> (0) | 2023.04.09 |
8. ES6 문법 & 일급 객체로서의 함수 (0) | 2023.04.09 |
7. 반복문 (0) | 2023.04.08 |