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