Actionscript 3 AS3对象过滤

Actionscript 3 AS3对象过滤,actionscript-3,garbage-collection,object,for-loop,multidimensional-array,Actionscript 3,Garbage Collection,Object,For Loop,Multidimensional Array,嗯。所以我正在开发一个应用程序,它可以从数据库中检索项目并构建一个库。我已经做了很多次了,应该很简单 我遇到了一些问题,因为在这个图库中,我从包含图像文件和其他文件的数据库中获取结果。比方说,除了闪光灯,我不能改变任何东西,所以我需要检测它是否是图像,如果是,只显示它 我的问题是:如果对象大小不变,我怎么能从对象中删除属性?我使用count函数来生成分页数据,所以我不能只是“null”它们,而且据我所知,delete也不是一个选项 我的解决方案是创建另一个对象,使用for-in循环过滤好的项目,

嗯。所以我正在开发一个应用程序,它可以从数据库中检索项目并构建一个库。我已经做了很多次了,应该很简单

我遇到了一些问题,因为在这个图库中,我从包含图像文件和其他文件的数据库中获取结果。比方说,除了闪光灯,我不能改变任何东西,所以我需要检测它是否是图像,如果是,只显示它

我的问题是:如果对象大小不变,我怎么能从对象中删除属性?我使用count函数来生成分页数据,所以我不能只是“null”它们,而且据我所知,delete也不是一个选项

我的解决方案是创建另一个对象,使用for-in循环过滤好的项目,然后将它们放入另一个对象,但对象中的每个项目都是一个对象,我没有对象的推送功能

因此,在绝望中,我使用一个索引goodItemsObject[index]=allItemsObject[object]将对象添加到新对象中,但这似乎是解决这个问题的一种非常可怕的方法

下面是一些代码:

var filteredMO = new Object();
var newFile = 0;
for each(var file in mediaObject){
if(check_file(file)){
    filteredMO[newFile] = file;
    newFile++;
}
}
mediaObject = filteredMO;
check_file只返回true或false,mediaObject中充满了对象

我更愿意这样做:

for each(var file in mediaObject){
    if(check_file(file)){
         //remove_from_object_for_reals(mediaObject[file]);
    }
}
我意识到这可能是不可能的,它会跳出for循环吗?但是类似的东西会很甜蜜。我希望能让gc抓到所有这些无用的东西

有什么想法吗

谢谢


Jesse

现在用来存储对象的称为关联数组。不能从关联数组中删除键值。你需要的是一本as3内置的字典

然后,您可以通过调用从字典中删除密钥

delete dict["myKey"]

谢谢,我不知道从字典中删除内容会受到不同的对待。在对象上,使用完全相同的命令生成一个索引,该索引的值为null,用于抛出计数函数和for in语句。不能从关联数组中删除键值。-事实并非如此。删除对象[键];作品
delete dict["myKey"]