确定。所以我正在开发一个从数据库中检索项目并构建图库的应用程序。我做了很多次,应该很简单。
我遇到了问题,因为在这个库中,我从包含图像文件和其他文件的数据库中获得结果。我只想说除了闪光灯我不能改变任何东西,所以我需要检测它是否是一个图像,并且只显示它。
我的问题是:如果没有对象保持相同的大小,我怎么能从对象中删除属性?我使用count()函数来生成分页数据,所以我不能只是'空'它们,而且据我所知,delete()也不是一个选项。
我的解决方案是创建另一个对象,使用for循环过滤好项目,然后将它们弹出到另一个对象,但是对象中的每个项目都是一个对象,我没有push()函数对象。
所以,在绝望中,我使用一个增量来使用索引(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抓住所有这些无用的东西。
任何想法?
感谢,
杰西
答案 0 :(得分:0)
现在用于存储对象的内容称为关联数组。您无法从关联数组中删除键值。你需要的是一本字典(as3有一个内置的http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html)。
import flash.utils.Dictionary;
var dict:Dictionary = new Dictionary();
然后您可以通过调用
从字典中删除密钥delete dict["myKey"]