2013-01-18 94 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

相關問題