프로그래밍하는 동안 공통적 인 시나리오는 목록이 주어진 경우 조건이 참일 때 동일한 목록의 pop()
요소를 반복해야한다는 것입니다.목록을 반복하면서 동일한 목록에서 요소를 튀기는 동안 요소가 간과되는 것을 방지하는 방법
그런 상황에서 예를 들어 목록이 a = [1, 2, 3, 4, 5, 6, 7, 9, 10]
이고 목록에서 모든 요소를 제거해야하는 질문은 이상합니다.
그래서이 방법을 사용합니다.
for (int i=0; i<=a.length; i++) {
if (a[i]%2 != 0) {
a.removeElementAtIndex(i);
}
}
자,이 목록 a
에 6
개까지 잘 작동합니다.
그런 다음 루프 인덱스는 6
이고 목록의 7
을 참조합니다. 7
은 홀수이므로 목록에서 7
을 제거합니다.
이제 루프 인덱스는 7
이고 목록의 10
을 가리 킵니다. 목록의 요소 9
은 이제 루프에 의해 이미 확인 된 인덱스 6
에 있습니다.
이렇게하면이 방법으로 오류가 발생합니다!
질문 : 위와 같은 상황이 발생하지 않고 하나의 목록 만 사용하고 요소 위에 한 번만 사용하십시오.
. array.filter()를 사용하지 않는 이유는 무엇입니까? 이렇게하면 a의 모든 요소를 반복하고 조건과 일치하는 값만 반환합니다. 따라서 var results = a.filter (function (element) {// 요소가 짝수이면 true를 반환하는 논리}); – nraduka
@nraduka 이렇게하면 새 목록이 만들어지고 그 자리에서 목록을 변경하려고합니다. –
새로운 목록을 만들지 않으려 고하면 - 항목을 제거 할 때마다 'i'를 감소시킬 수 있습니다. –