세트(Set)의 add 메서드는 특정 값이 이미 세트에 존재하는지 먼저 확인한 후, 존재하지 않는 경우에만 해당 값을 세트에 추가합니다. 이러한 동작 방식 덕분에 세트의 핵심 특성인 중복 허용 불가를 자연스럽게 유지할 수 있습니다.
아래와 같이 직접 구현해 볼 수 있습니다.
add 메서드 구현 예제
add(val) {
if (!this.has(val)) {
this.container[val] = val; return true;
}
return false;
}동작 원리
- this.has(val): 세트에 해당 값이 이미 있는지 검사합니다.
- 값이 존재하지 않으면 컨테이너에 값을 저장하고
true를 반환하여 추가가 성공했음을 알립니다. - 값이 이미 존재하면 아무 작업도 하지 않고
false를 반환합니다.
구현 테스트하기
작성한 add 메서드가 정상적으로 동작하는지 아래 코드로 확인해 보겠습니다.
const testSet = new MySet(); testSet.add(1); testSet.add(2); testSet.add(5); testSet.add(2); testSet.display(); console.log(testSet.has(5)); console.log(testSet.has(20)); console.log(testSet.has(1));
실행 결과
위 코드를 실행하면 다음과 같은 출력을 얻습니다.
{ '1': 1, '2': 2, '5': 5 }
True
False
True결과 분석
주목할 점은 숫자 2를 두 번 추가하려고 시도했지만 실제로는 한 번만 저장되었다는 것입니다. 두 번째 호출 시에는 값이 이미 존재하기 때문에 false가 반환됩니다. 이는 add 메서드 내부에서 중복 여부를 검사한 후 실패 시 false를 반환하도록 설계했기 때문입니다.
ES6 세트에서 add 함수 사용하기
ES6에서 기본 제공되는 Set 객체 역시 동일한 방식으로 add 함수를 사용할 수 있습니다.
const testSet = new MySet(); testSet.add(1); testSet.add(2); testSet.add(5); testSet.add(2); console.log(testSet.has(5)); console.log(testSet.has(20)); console.log(testSet.has(1));
실행 결과
실행 결과는 다음과 같습니다.
True False True
이처럼 add 메서드는 중복된 값의 삽입을 자동으로 차단하므로, 고유한 값들의 집합을 관리해야 하는 상황에서 매우 유용하게 활용할 수 있습니다.