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]
'에러 || 디버깅 노트' 카테고리의 다른 글
<script>태그에 src 속성으로 외부 JS 파일 불러온 다음에 JS파일에 있는 변수 출력이 안되는 이유 (0) | 2023.03.27 |
---|---|
브라우저 환경에서 require() 쓰지 못하는 이유 (0) | 2023.03.27 |
자바스크립트에서 자주 겪는 에러들 (0) | 2023.03.26 |