JS -> 객체, 배열 : 많고 다양하고 복잡한 프로그램을 만들어왔다
그럼에도 불구하고 현실세계를 반영하기에는 많이 어려움
추가적인 자료구조가 등장함. (Map, Set)
Map, Set의 목적 : 데이터의 구성, 검색, 사용을 효율적으로 처리 > 기준의 객체 또는 배열보다
const myMap = new Map();
myMap.set('key', 'value');
//...
//...
myMap.get('key')
요소 하나하나를 반복할 수 있도록 배열 또는 객체와 비슷한 형태로 열거되어있는 자료구조라고 이해할 수 있음 (데이터를 조회해주는 객체라고 생각해도 될까?)
my
Map.key() 가 반환하는 값이 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)];
}
console.log(myMap.size); //map의 사이즈(길이)
//3
console.log(myMap.has("two")); //key 기반 검색
//true
const mySet = new Set();
mySet.add("value1");
mySet.add("value2");
mySet.add("value3");
mySet.add("value5");
mySet.add("value8");
console.log(mySet.size); //5
console.log(mySet.has("value1")); //true
console.log(mySet.has("value2")); //true
console.log(mySet.has("value3")); //true
//Iterator
for (const value of mySet.values()) {
console.log(value);
// value1;
// value2;
// value3;
// value5;
// value8;
}
// 교집합, 차집합으로 흉내(simulate)낼 수 있다, 이 부분도 찾아보기