Set은 중복되지 않는 데이터를 object형태로 저장할 때에 유용한다. 그리고 destructure도 가능하여 object형태로가지고 있어도 소괄호[]
로 감싸서 array로 변환 할 수 있다. Set의 object는 key가 없다. 다른말로 value만 존재하는 형태이며 value가 key역할을 하게되는것이다.
<aside> 📝 Create set
const variable = new Set();
const sexySet = new Set([1, 2, 3, 4, 5, 6, 7, 8, 7, 7, 7, 7, 7, 8]);
// Set(8) {1, 2, 3, 4, 5, 6, 7, 8}
</aside>
Set은 알고리즘이나 어떠한 매커니즘이 필요한 코딩에 주로 사용되기도 한다.
/**
* Set은 unique한 value를 저장하는 객체이다. 그리고 key를 가지고 있지 않는
* object를 만들어낸다. Set은 일반 value를 인수로 전달해도 되고 array로 전달
* 해도 된다.
*/
const sexySet = new Set([1, 2, 3, 4, 5, 6, 7, 8, 7, 7, 7, 7, 7, 8]);
WeakSet은 set과 같은 동작을하지만 한가지 다른점은 접근하지 않는 property가 있다면 GC가 해당property를 weakSet으로 부터 삭제한다.
Map은 set고 비슷한 동작을 하지만 가장큰 차이점은 set과 달리 key값도 가지고 있다는것이다. Map은 Key등록하면 그 key가 해당 map의 유니크한 property가 된다. set과 get으로 데이터를 넣고 접근할 수 있다. map 말고도 weak map도 있지만 key를 object형식으로 설정해야하며 weak set처럼 접근하지 않는 데이터가 있으면 GC에 의해서 데이터가 자동 소멸 된다.