구조 또는 비구조화된 형태로 프로그래밍 언어가 제공하는 값을 담을 수 있는 공간
프로그래밍 언어마다 다르지만, 각 언어마다 데이터를 저장하는 데이터 구조 종류들이 있다. JavaScript에도 두 종류로 분류하여 여러 컬렉션이 구현되어있다.
💡 Indexed Collection - Array, [Typed Array](https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Typed_arrays) Keyed Collection - Object, Map, Set, [WeakMap](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/WeakMap), [WeakSet](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/WeakSet)컬렉션의 분류는 ‘무엇을 기준으로 내부 요소를 반환하는가?’ 인데, 그에 따라 Index로 반환하는 것과 Key로 반환하는 두 분류로 나뉘었다. 이 중 Map, Set, WeakMap, WeakSet, TypedArray
는 ES6 문법에서 함께 도입됐다.
컬렉션은 내부적으로 Iterator를 가지고 있어서 반복이 가능하며 아래의 기능들을 사용할 수 있다.
for...of
루프...
)// 생성자
const set = new Set();
const reduplicatedSet = new Set([1,1,2,3,4,5]); // Set(5) {1,2,3,4,5}
const strSet = new Set("Common"); // Set(4) {'C', 'o', 'm', n'}
특징
Method
// 생성자
const map = new Map();
map.set("place", "Seoul");
map.set("day", 230815);
map.set("menu", [['juice', 4000], ['americano', 1500]]);
****일반 객체와 다른 점****
Method
entries
): entries를 Map 생성자를 이용해 map으로 생성map 이름
): map을 object로 형 변환Map, Set이 참조하는 객체들은 강하게 연결되어있어 가비지 컬렉터가 메모리 수거를 하지 못한다. Map, Set도 크기가 크기 때문에 더이상 쓰지 않을 경우에는 메모리에서 삭제하기 쉽도록 나온 것이 WeakMap, WeakSet이다.
그러므로 Map, Set과 근본적으로 크게 다르지 않으나 포함된 메소드 유무에 약간의 차이가 있을 뿐이다.