가끔 배열의 요소를 일부 삭제할 필요가 생긴다.
하지만 바로 splice 등으로 제거한다면 이상한 결과를 낸다는 것 을 알 수 있다.
1 | (function(a, b){ |
2 | for(var i=0;i<a.length;i++){ |
3 | if(i == b){ |
4 | a.splice(i, 1); |
5 | continue; |
6 | } |
7 | console.log(a[i]); |
8 | } |
9 | })([5,3,2,1,0], 1); |
위 코드는 5, 1, 0 이 출력 된다.
이 문제는 배열에서 바로 내려 버려서 뒷 요소들의 인덱스가 한 칸 앞으로 당겨져서 나는 현상인데
[5 1 0]
인덱스를 감산 하는 것 만으로도 해결 할 수 있다.
1 | (function(a, b){ |
2 | var i=a.length; |
3 | while(i --> 0){ |
4 | if(i == b){ |
5 | a.splice(i, 1); |
6 | continue; |
7 | } |
8 | console.log(a[i]); |
9 | } |
10 | })([5,3,2,1,0], 1); |
0, 1, 2, 5가 출력된다.
'트러블슈팅' 카테고리의 다른 글
배열 원소 제거에 관해. (0) | 2015.02.02 |
---|---|
NginX에서 Dropbox경로를 사용하는 방법. (0) | 2015.01.24 |
댓글을 달아 주세요