LHJ

I'm a FE developer.

10.3 셋

18 May 2020 » js_lj

10.3 셋

중복을 허용하지 않는 데이터 집합입니다.
이전 예제를 재활용합시다.
그런데 이번에는 한 사용자에게 여러 역할을 할당하고 싶다고 합시다.
예를 들어 “User” 역할은 모든 사용자에게 할당되지만, 관리자는 “User” 역할과 “Admin” 역할을 동시에 가질 수 있습니다.
하지만 같은 사용자에게 같은 역할을 여러 번 부여한다는 건 상식적이지 않습니다.
은 이런 경우에 이상적인 데이터 구조입니다.

new Set();

먼저 Set 인스턴스를 만듭니다.

const roles = new Set();

add();

이제 사용자 역할을 추가할 때는 add() 메서드를 사용합니다.

roles.add("User"); // Set["User"]

이 사용자에게 관리자 역할을 추가하려면 add()를 다시 호출합니다.

roles.add("Admin"); // Set["User", "Admin"]

size

Map과 마찬가지로 Set에도 size 프로퍼티가 있습니다.

roles.size; // 2

셋의 장점은 아주 단순합니다.
추가하려는 것이 셋에 이미 있는지 확인할 필요가 없습니다.
이미 있다면 아무 일도 일어나지 않습니다.

roles.add("User");  // Set["User", "Admin"]
roles.size;         // 2

delete()

역할을 제거할 때는 delete()를 호출합니다.
제거에 성공했다면, 즉 그런 역할이 셋에 존재했다면 true를 반환하고,
그렇지 않다면 false를 반환합니다.

rules.delete("Admin");      // true
roles;                      // set ["User"]
rules.delete("Admin");      // false