RATSENO

[JS]맵(Map)과 셋(Set) -2 본문

DEV/JS

[JS]맵(Map)과 셋(Set) -2

RATSENO 2019. 12. 4. 14:42

셋(Set)은 중복을 허용하지 않는 데이터 집합입니다.

이전 포스팅 :  2019/12/04 - [DEV/JS] - [JS]맵(Map)과 셋(Set) -1

 

[JS]맵(Map)과 셋(Set) -1

ES6에서 새로 도입한 데이터 구조인 맵과 셋에 대해서 알아보겠습니다. 맵은 키와 값을 연결한다는 점에서 객체와 비슷하고, 셋은 중복을 허용하지 않는다는 점만 제외하면 배열과 비슷합니다. 이번 포스팅에서는..

ratseno.tistory.com

에서 사용한 예제를 다시 활용하겠습니다. 이번에는 한 사용자에게 여러 역할을 할당하고 싶다고 가정하겠습니다.

예를 들어 "User" 역할은 모든 사용자에게 할당되지만, 관리자는 "User" 역할과 "Admin" 역할을 동시에 가질 수 있습니다. 하지만 같은 사용자에게 같은 역할을 여러번 부여한다는 것은 상식적이지 않습니다. Set은 이런 경우에 적합한 데이터 구조입니다.

 

Set 인스턴스를 만들어 보겠습니다.

const roles = new Set();

 

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

roles.add("User")
//Set { 'User' }

 

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

roles.add("Admin");
//Set { 'User', 'Admin' }

 

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

roles.size;
//2

 

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

roles.add("User");
//Set { 'User', 'Admin' }
roles.size;
//2

 

제거할 때는 delete()를 호출합니다. 

제거에 성공했다면, 즉 셋에 존재했다면 true

그렇지 않다면 false를 반환합니다.

roles.delete("Admin");
//true
console.log(roles);
//Set { 'User' }
roles.delete("Admin");
//false

'DEV > JS' 카테고리의 다른 글

[JS/jQuery]다양한 입력값 체크  (1) 2020.02.07
[JS/jQuery]$(document).ready(function(){});이란?  (1) 2020.02.06
[JS]맵(Map)과 셋(Set) -1  (0) 2019.12.04
[JS]map(), reduce() 함수  (0) 2019.12.03
[JS]Promise (프라미스) - 2  (0) 2019.11.21
Comments