Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트 세트(Set)에 요소 추가하기 – add 메서드 구현과 활용법

세트(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 메서드는 중복된 값의 삽입을 자동으로 차단하므로, 고유한 값들의 집합을 관리해야 하는 상황에서 매우 유용하게 활용할 수 있습니다.