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

JavaScript로 해시 테이블 순회하기: forEach 메서드 구현


이제 해시 테이블에 저장된 모든 키-값(key-value) 쌍을 순회하면서 각 값에 대해 콜백(callback) 함수를 실행할 수 있는 forEach 함수를 만들어 보겠습니다.

구현 방법은 매우 간단합니다. 내부 컨테이너(container)에 있는 각 체인(chain, 버킷)을 차례대로 반복한 뒤, 체인 안의 각 요소에 대해 키와 값을 인수로 전달하며 콜백을 호출해 주면 됩니다.

forEach 메서드 구현 예제

forEach(callback) {
  // 컨테이너의 각 체인(버킷)을 순회
  this.container.forEach(elem => {
    // 각 체인 내부의 요소마다 키-값 쌍으로 콜백 호출
    elem.forEach(({ key, value }) => callback(key, value));
  });
}

forEach 메서드는 외부에서 전달된 콜백 함수를 받아 해시 테이블 전체를 탐색하면서, 저장된 모든 데이터를 한 번씩 처리할 수 있게 해줍니다. 배열의 forEach와 사용 방법이 유사하기 때문에 직관적으로 활용할 수 있다는 장점이 있습니다.

동작 테스트

실제로 잘 동작하는지 확인해 보겠습니다. 아래 예제에서는 해시 테이블에 여러 개의 데이터를 삽입한 후, forEach를 이용해 모든 값을 더하는 작업을 수행합니다.

let ht = new HashTable();
ht.put(10, 94); ht.put(20, 72);
ht.put(30, 1); ht.put(21, 6);
ht.put(15, 21);
ht.put(32, 34);

let sum = 0;

// forEach로 모든 값을 합산
ht.forEach((k, v) => sum += v)

console.log(sum);

실행 결과

위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.

228

저장된 값들의 합계(94 + 72 + 1 + 6 + 21 + 34)가 정상적으로 계산되어 228이 출력됩니다. 이처럼 forEach 메서드를 활용하면 해시 테이블의 전체 데이터를 손쉽게 순회하면서 원하는 연산을 자유롭게 수행할 수 있습니다.