package helper { import flash.utils.describeType; public class ArrayFiltering { /** @private className for filtering */ private var _className:String; public function ArrayFiltering() { _className = ""; } /** * This function will filter array accordingly to ClassName */ public function filterArray(array:Array, arrayClassName:String):Object { _className = arrayClassName; var filteredArray:Array; filteredArray = array.filter(isType); return filteredArray; } private function isType(element:*, index:int, arr:Array):Boolean { var descriptionXml: XML = describeType(element); var className: String = descriptionXml.@name; var flag:Boolean = false if (className == _className) flag = true; return flag; } } }
var arrayFiltering:ArrayFiltering = new ArrayFiltering(); return arrayFiltering.filterArray(array, 'String');
Завдяки Місяцю Івану кількість коду суттєво зменшилась:
package helper { public class ArrayFiltering { /** * This function will filter array accordingly to arrayClass type */ public static function filterArray(array:Array, arrayClass:Class):Object { var filteredArray : Array = new Array(); for each ( var element : * in array ) { if (element is arrayClass) { filteredArray.push(element); } } return filteredArray; } } }