2013-04-09 7 views
0

jQuery에 배열이 있습니다. 선택한 필드에서 특정 값을 가진 모든 요소를 ​​제거하고 싶습니다. 루프와 스플 라이스를 할 때 오류가 발생합니다. 내가 오류 얻을 이유jQuery 배열에서 요소를 제거하면 정의되지 않은 오류가 발생합니다.

$.each(arr,function(idx,val) { 
    if (arr[idx].field == "something") { 
     arr.splice(idx,1); 
    } 
}); 

는 이해 :

Uncaught TypeError: Cannot read property 'field' of undefined 

을 ...하지만 문제가 가장 좋은 방법을 파악하는 데 문제가 있습니다. 약간의 연구는 grep이 올바른 접근 방법 일 수 있다는 신호를 보여줍니다. 어떤 제안?

* 결국

답변의 *이 내가 한 일이다. 누구나 더 나은 답변을 갖고 계신가요? :

for (var idx=0; idx<arr.length; idx++) 
{ 
    if (arr[idx].field == "something") { 
     arr.splice(idx,1); 
     idx--; 
    } 
} 

답변

0

for 루프를 사용하십시오. 편곡의 길이는해야 동적

var length= arr.length; 
for(var i=0; i<length ; i++){ 
    if (arr[i].field == "something") { 
     arr.splice(i,1); 
     length = arr.length; 
    } 
} 
0

변화 : 당신의 예를 field에서

$.each(arr,function(idx,val) { 
    if (arr[idx] == "something") { 
     arr.splice(idx,1); 
    } 
}); 

jsFiddle example

은 아무 의미가 없습니다. arr[idx] 값을 가져옵니다.

+0

배열 크기가 감소함에 따라 다음과 같이 보입니다. – Andrew

+0

사용해보기. 그것은 오류없이 잘 작동합니다. – j08691

+0

"필드"는 내 배열의 실제 필드에 대한 이름입니다. 필수 항목입니다. – Andrew