에러 || 디버깅 노트

커스텀 배열 메서드 만들기

욱둥 2023. 2. 28. 00:12

remove라는 메서드를 만들었다.

배열 요소에서 지우고싶은 숫자를 인수로 넣으면 제거된 배열이 출력되는 메서드이다.

 

문제발생 : [1,3,3,3,5] 와 같이 연속된 숫자가 잘 제거가 안되는 버그가 발생했다.

하나하나 디버깅 해본결과 splice를 하면 배열 요소가 지워지면서 다음 조건에 만족하는 num의 인덱스까지 같이 바껴서 그런것이었다!

 

해결방법 : index라는 변수를 선언해 업데이트 되는 배열의 인덱스를 다시 재할당해주는 방식으로 해결했다.

Array.prototype.remove = function (num) {
  for(let i = 0; i < this.length; i++) {
    let index = this.indexOf(num);
    if(this[index] === num) {
      this.splice(index, 1);
    }
  }
}

var arr2 = [1,3,3,3,5,5,5,6,6,6,7,5,7,5,5];
arr2.remove(5);

console.log(arr2); // (9) [1, 3, 3, 3, 6, 6, 6, 7, 7]