0

だから私はデータベースから項目を取得し、ギャラリーを構築するアプリケーションに取り組んでいます。私はこれを何度もやったことがあり、それは簡単であるはずです。AS3オブジェクトフィルタリング

このギャラリーでは、イメージファイルとその他のファイルの両方を含むdbから結果が得られるため、問題が発生しています。単にフラッシュ以外のものを変更することはできないと言いましょう。イメージであるかどうかを検出し、それがあれば表示する必要があります。

私の質問は、オブジェクトを同じサイズのままにしないでオブジェクトからプロパティを削除するにはどうすればいいですか? count()関数を使用してページネーションデータを生成するので、単にnullにすることはできません。わかっているので、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を返し、メディアオブジェクトは、オブジェクトのすべてのフルです。

私は多くがこれを行うことを好む:

for each(var file in mediaObject){ 
    if(check_file(file)){ 
     //remove_from_object_for_reals(mediaObject[file]); 
    } 
} 

私は(それがループのために投げるのでしょうか?)それができない場合があります実現が、同様の何かが甘いでしょう。私は、これらの無駄なオブジェクトがぶら下がっているCGをつかむことができるようにしたいと思います。

あなたが今、あなたのオブジェクトを格納するために使用している何

おかげで、

ジェシー

答えて

0

は連想配列と呼ばれています。連想配列からキー値を削除することはできません。あなたが必要とするものは辞書です(as3には1つのhttp://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.htmlが組み込まれています)。

import flash.utils.Dictionary; 

var dict:Dictionary = new Dictionary(); 

、あなたは

delete dict["myKey"] 
+0

感謝を呼び出すことによって、あなたの辞書からキーを削除することができ、私は辞書から削除すると、異なる扱いをされたことを知りませんでした。オブジェクト上で、全く同じコマンドは、count関数を投げ捨てる "null"の値を持つインデックスとin文のインデックスを生成します。 – Jesse

+0

"連想配列からキー値を削除することはできません。" - 本当じゃない。オブジェクトを削除する["キー"];働く – Heitara