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

자바스크립트에서 스택 요소 한 번에 지우기 – clear 메서드 구현

스택(Stack)은 마지막에 넣은 데이터가 가장 먼저 나오는 LIFO(Last In, First Out) 방식의 대표적인 자료구조입니다. 이 글에서는 자바스크립트로 구현한 간단한 스택 클래스를 살펴본 뒤, 저장된 모든 요소를 한 번에 삭제하는 clear 연산을 추가하는 방법을 알아봅니다.

기본 스택 클래스 예제

class Stack {
   constructor(maxSize) {
      // 최대 크기가 전달되지 않으면 기본값으로 10 사용
      if (isNaN(maxSize)) {
         maxSize = 10;
      }
      this.maxSize = maxSize;
      // 스택 값을 담아둘 배열 초기화
      this.container = [];
   }

   // 클래스 개발 과정에서 내용을 확인하기 위한 메서드
   display() {
      console.log(this.container);
   }

   // 스택이 비어 있는지 확인
   isEmpty() {
      return this.container.length === 0;
   }

   // 스택이 가득 찼는지 확인
   isFull() {
      return this.container.length >= this.maxSize;
   }

   push(element) {
      // 가득 찼다면 더 이상 추가하지 않음
      if (this.isFull()) {
         console.log("Stack Overflow!");
         return;
      }
      this.container.push(element);
   }

   pop() {
      // 비어 있다면 삭제할 요소가 없음
      if (this.isEmpty()) {
         console.log("Stack Underflow!");
         return;
      }
      this.container.pop();
   }

   peek() {
      if (this.isEmpty()) {
         console.log("Stack Underflow!");
         return;
      }
      return this.container[this.container.length - 1];
   }
}

isFull()은 컨테이너 배열의 길이가 maxSize와 같거나 클 때 true를 반환하고, isEmpty()는 컨테이너의 크기가 0인지 검사합니다. 그리고 push()pop()은 각각 스택에 새 요소를 추가하고 제거하는 역할을 담당합니다.

참고: 위 코드에서 isFull()peek()은 반드시 this.maxSize, this.isEmpty()처럼 this를 통해 클래스 멤버에 접근해야 정상적으로 동작합니다.

clear 연산 추가하기

스택의 내용을 모두 지우는 방법은 매우 간단합니다. container 프로퍼티를 새로운 빈 배열로 재할당하기만 하면 됩니다.

clear() {
   this.container = [];
}

이렇게 처리하면 기존에 담겨 있던 모든 요소가 사라지고, 스택은 처음 생성된 것과 같은 빈 상태가 됩니다.

동작 확인

let s = new Stack(2);
s.push(10);
s.push(20);
s.display();
s.clear();
s.display();

출력 결과

[10, 20]
[]

push로 두 개의 요소를 추가했을 때는 [10, 20]이 출력되지만, clear() 호출 후에는 빈 배열 []이 출력되는 것을 확인할 수 있습니다.

응용: length 속성을 활용하는 방법

배열 객체 자체의 참조를 유지한 채 내부만 비우고 싶다면 this.container.length = 0;을 사용할 수도 있습니다. 이 방식은 해당 배열을 다른 변수에서 함께 참조하고 있을 때 특히 유용합니다.