세트(Set) 자료구조에서 특정 값을 제거하려면 delete 메서드를 사용합니다. 이 메서드는 먼저 해당 값이 세트에 존재하는지 확인한 후, 값이 있다면 세트에서 이를 제거하고 true를 반환합니다. 만약 값이 존재하지 않는다면 아무 작업도 수행하지 않고 false를 반환합니다.
delete 메서드 구현하기
커스텀 세트 클래스에서 delete 메서드는 다음과 같이 구현할 수 있습니다.
delete(val) {
if (this.has(val)) {
delete this.container[val];
return true;
}
return false;
}커스텀 세트 테스트
구현한 delete 메서드가 정상적으로 동작하는지 확인해 보겠습니다. 여러 개의 요소를 추가한 뒤 일부를 삭제하고, 남은 요소와 각 값의 존재 여부를 출력합니다.
const testSet = new MySet(); testSet.add(1); testSet.add(2); testSet.add(5); testSet.delete(5); testSet.delete(2); testSet.display(); console.log(testSet.has(5)); console.log(testSet.has(20)); console.log(testSet.has(1));
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
{ '1': 1 }
false
false
true값 5와 2가 성공적으로 삭제되어 세트에는 1만 남았으며, has() 호출 결과에서도 5와 20은 false, 1만 true로 반환되는 것을 확인할 수 있습니다.
ES6 내장 Set에서 delete 사용하기
ES6부터는 JavaScript에 Set 객체가 기본으로 내장되어 있어, 별도의 구현 없이 바로 delete 메서드를 사용할 수 있습니다.
const testSet = new MySet(); testSet.add(1); testSet.add(2); testSet.add(5); testSet.delete(5); console.log(testSet.has(5)); console.log(testSet.has(20)); console.log(testSet.has(1));
실행 결과
위 코드의 출력 결과는 다음과 같습니다.
false false true
ES6의 내장 Set을 사용하면 요소 추가, 삭제, 존재 여부 확인 등의 연산을 간편하게 처리할 수 있으며, 대부분의 경우 커스텀 구현보다 내장 Set을 사용하는 것이 권장됩니다.