1. Map이란?
- key / value pair
- key 또는 value에 어떠한 데이터타입도 다 들어올 수 있으며 정렬된 순서로 저장된다.
- 한 맵에서의 키는 오직 단 하나만 존재한다. (Map 집합의 유일성)
- 검색, 삭제, 제거, 여부 확인 등 제공
const myMap = new Map();
myMap.set('key', 'value')
console.log(myMap.get('key')); //value에 접근
-맵에서의 반복은 keys(), values(), entries()의 메소드 사용으로 이루어진다. (키, 값 및 키-값 쌍 반복) => Map Iterator를 반환한다.
- for~of 문을 통한 Iterator의 반복 (keys(), values(), entries())
- 반복은 삽입한 순서대로 진행도니다 (set 순서대로)
const myMap = new Map();
myMap.set('one' , 1)
myMap.set('two' , 2)
myMap.set('three' , 3)
const myKeys = myMap.keys() //Map Iterator 형
//Iterator형은 for-of 문을 사용하여 반복문을 작성한다.
for (const nums of myKeys) {
console.log(nums)
}
- Map의 크기 확인하기
console.log(myMap.size)
- Map 요소 여부 확인하기 (키로 확인) => boolean
console.log(myMap.has('two')) //return true
Reference : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Map
2. Set 이란?
Set
- 값 콜랙션으로, 고유한 값을 저장하는 자료구조이다. (값이 중복되지 않는 유일한 요소로만 저장)
- 키는 저장하지 않고 값만 저장한다.
- Set 또한 삽입 순서대로 요소를 순회할 수 있다.
- 값 추가, 검색, 삭제, 모든 값 제거, 존재 여부 확인 제공
const mySet = new Set()
mySet.add('value1');
mySet.add('value2')
mySet.add('value2')
console.log(mySet) // Set(2) { 'value1' , 'value2'}
console.log(mySet.size) // 2
console.log(mySet.has('value2')) // true
Iterator
- for ~ of 문 사용 가능
for (const value of mySet.values()) {
console.log(value)
}
//value1, value2
- 기본 집합 연산도 구현이 가능하다. (MDN)
Set.prototype.isSuperset = function(subset) {
for (var elem of subset) {
if (!this.has(elem)) {
return false;
}
}
return true;
}
Set.prototype.union = function(setB) {
var union = new Set(this);
for (var elem of setB) {
union.add(elem);
}
return union;
}
Set.prototype.intersection = function(setB) {
var intersection = new Set();
for (var elem of setB) {
if (this.has(elem)) {
intersection.add(elem);
}
}
return intersection;
}
Set.prototype.difference = function(setB) {
var difference = new Set(this);
for (var elem of setB) {
difference.delete(elem);
}
return difference;
}
//Examples
var setA = new Set([1, 2, 3, 4]),
setB = new Set([2, 3]),
setC = new Set([3, 4, 5, 6]);
setA.isSuperset(setB); // => true
setA.union(setC); // => Set [1, 2, 3, 4, 5, 6]
setA.intersection(setC); // => Set [3, 4]
setA.difference(setC); // => Set [1, 2]
'Computer Programming > Javascript' 카테고리의 다른 글
자바스크립트의 비동기 처리 동작 원리 | 콜스택, 이벤트루프, Promise, fetch, async/await (1) | 2023.06.14 |
---|---|
JavaScript 숫자야구 - slice(), splice(), filter()의 차이와 문제점 (0) | 2023.06.13 |
자바스크립트의 일급 객체(First-class Function)로서의 함수 (0) | 2023.06.12 |
JavaScript의 발전 및 특징(+ AJAX | XML 용어 정리) (0) | 2023.06.12 |
🎮 자바스크립트로 2D 게임 개발하기 (블럭맞추기) | canvas, JQuery, localStorage 사용 (0) | 2023.06.06 |