2009-08-14 11 views
1

私は問題を克服しましたが、私の解決策は実際には非効率的で厄介なようです。この問題を考えてみてください:Flexを使用して配列からアイテムを効率的にスプライスする

私が記事を持つ配列のコレクションを持っている

この配列のコレクションは、現在選択されている記事カテゴリに濾過されます。

現在の記事を表示するビューにバインドされたカーソルがあります。

カテゴリが削除されたとき、私は記事を削除する必要があります。カーソルやコレクションを使用することはできません。

私はソースから繰り返すことができますが、ソースから削除(スプライス)すると、ブレークして再び開始する必要があります。

これは非常に効率的なやり方ですが、同じソースで別のイテレーターを使用したり、ビューのバインドを解除して更新を完了したりするなどの方法があります。

私は本当に一般的な問題/問題であると確信しているので、私はトリックを逃している場合は教えてください。

おかげ

ロブ

P.S.私のiPhoneにこれを書きました。何か間違いをおかけして申し訳ありません!

答えて

1

ループを後方に実行します。 (スプライス)他のインデックスは、もは​​や正しい

for(var i:int = arr.length - 1; i >= 0; i--) { 
    if(some condition) { 
     arr.splice(i,1); 
    } 
} 
+0

愚かなマイクロ最適化:ポストの代わりにプレデクリメントを行うブーストのミリ秒数 – grapefrukt

+0

これは明らかなようです...ありがとう! – robmcm

0

最も簡単な解決策は、削除する必要があるインデックスを一時的な配列に保存することです。その後、コレクションを繰り返した後に戻り、一時配列内の項目を削除します。

しかし、私が集めることから、おそらく配列構造の代わりにハッシュ(Object)か何かを使うべきです。

+0

は私がすることを試みたが、できるだけ早く、あなたは一つのアイテムを削除して:

var len:int = arr.length; for(var i:int = 0; i < len; i++) { if(some condition) { arr.splice(i,1); } } 

は、次の操作を行います。

ので、代わりに、のは言いません! – robmcm

+0

インデックスをソートし、最後から削除します。もう一度、別のデータ構造を使うことを考えてみましょう。 – CookieOfFortune

+0

簡単な質問ですが、オブジェクトの使用例を示したり、配列コレクションのようなものをiViewCollectionに実装する方法を教えてください。 – robmcm

関連する問題