Sets

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

WeakSet은 set과 같은 동작을하지만 한가지 다른점은 접근하지 않는 property가 있다면 GC가 해당property를 weakSet으로 부터 삭제한다.

Map and Weakmap

Map은 set고 비슷한 동작을 하지만 가장큰 차이점은 set과 달리 key값도 가지고 있다는것이다. Map은 Key등록하면 그 key가 해당 map의 유니크한 property가 된다. set과 get으로 데이터를 넣고 접근할 수 있다. map 말고도 weak map도 있지만 key를 object형식으로 설정해야하며 weak set처럼 접근하지 않는 데이터가 있으면 GC에 의해서 데이터가 자동 소멸 된다.