ActionScript:ArrayCollection aの要素からArrayCollection bに含まれるもののみを抜き出すには

var a:ArrayCollection = new ArrayCollection(["aaa", "bbb", "ccc", "ddd", "eee"]);
var b:ArrayCollection = new ArrayCollection(["bbb", "ccc"]);

var result:Array = a.toArray().filter(
   function(item:*, index:int, arr:Array):Boolean{
      item = item as String;
      return item && b.contains(item);
   });


これで行けた.ArrayCollectionにもfilterFunctionというフィールドがあるので,なにか同じようなことができるはずですが,
よくわからないので,今の所これで.

これのプログラムはこれ.ListからListへドラッグしてみましょう.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
	<mx:ArrayCollection id="a" />
	<mx:ArrayCollection id="b" />
	<mx:Script>
		<![CDATA[
			import mx.events.DragEvent;
			import mx.collections.ArrayCollection;

			private function updateList(event:DragEvent):void{
				updatedList.dataProvider =  
					a.toArray().filter(function(item:*, index:int, arr:Array):Boolean{
							item = item as String;
							return item && b.contains(item);
						});
			}
			private function initApp():void{
				a = new ArrayCollection(["aaa", "bbb", "ccc", "ddddd", "eeeeee", "ffffff"]);
			}
		]]>
	</mx:Script>
	<mx:HDividedBox width="100%" height="100%">
		<mx:Panel title="ドラッグ元" width="10%" height="100%" layout="absolute">
			<mx:List id="dragSrc"  width="100%" height="100%" dragEnabled="true" dragComplete="updateList(event)" dataProvider="{a}"/>
		</mx:Panel>
		<mx:Panel title="ドロップ先" width="10%" height="100%" layout="absolute">
			<mx:List id="targetList"  width="100%" height="100%" dropEnabled="true" dataProvider="{b}"/>
		</mx:Panel>
		<mx:Panel title="ドラッグもとのうち,ドロップ先にドロップされたものだけ表示します" width="10%" height="100%" layout="absolute">
			<mx:List id="updatedList"  width="100%" height="100%"/>
		</mx:Panel>
	</mx:HDividedBox>
</mx:Application>