2013-01-18 3 views
0

안녕하세요. 객체 묶음을 반복하고 변수와 일치하는지 확인한 간단한 반복문이 있습니다. 일치하는 경우 해당 목록에서 제거하고 싶습니다. 그것을위한 배열을 생성 이외의 모든 옵션은객체를 반복 한 다음 삭제합니다.

//my_objects is global (window.my_objects) 

for(var i in my_objects){ 

    if(my_objects[i].value == 100){ 
     //remove it 
    } 

} 

있습니까 :

하지만 난 그것을 할 방법을 모른다 ...이 내가 뭘하려고 오전의 아이디어인가? 개체가 여전히 내 루프를 통해 반복 될 것이라는 것을 의미하는 속성 만 삭제하는 delete을 찾을 수있었습니다.

이 함수는 X 초마다 호출됩니다.

답변

1

이 그것을 반복 다음 시간에 할 수 없다는 것을 의미처럼 개체의 속성을 삭제 :

for(var i in my_objects){ 
    if(my_objects[i].value == 100){ 
     delete my_objects[i]; 
    } 
} 

참고 :이 my_objects에 속성으로 해당 개체를 제거합니다. 현재 제거 된 객체에 대한 참조가있는 다른 코드가 없으면 가비지 수집에 사용할 수있게되고 결국 해제됩니다.

+0

나는 삭제가 단지 실제 객체가 아닌 객체의 속성을 제거 할 수 있다고 생각 했는가? – Sir

+0

'for (var i in my_objects)'는'my_object'의 속성을 반복합니다. 다음에 무언가를 반복하기를 원하지 않는다면, 문제의 속성을 삭제하면'delete'가 그 일을합니다. – jfriend00

+0

아 좋아! 내가 참조! 고마워 :) 하나의 질문에도 불구하고 브라우저는 자동으로 그것을 제거한다. my_objects가'Object {}'로 끝나거나 메모리를 너무 비워야 만합니까? – Sir

관련 문제