actionscript-3 flex3 filterfunction

actionscript 3 - ¿Cómo puedo obtener una lista de propiedades en un objeto en Actionscript?



actionscript-3 flex3 (8)

Esto también te ayudará ...
1. for Loop - Funcionará según el índice
2. para cada llamada recursiva hasta la longitud
3. para en - usado para leer los valores de la propiedad

for( var obj : String in objectData ) //here objectData is your object { trace( "Object Name Is : " + obj ); var data : Object = objectData[obj]; //here we get the object value by using the property name trace( "Value Is : " + data ); //Converts object to string }

Tengo un proveedor de datos y una función de filtro para mi matriz que está asignada a mi proveedor de datos.

¿Cómo puedo obtener una lista de las propiedades que se encuentran en cada fila del proveedor de datos (elemento.data) a medida que pasa a la función de filtro?

Por ejemplo, si mi objeto contenía:

  • Objeto
    • nombre
    • correo electrónico
    • dirección

Entonces, me gustaría, en mi función de filtro, poder ver el nombre, el correo electrónico y la dirección. Desafortunadamente, no sé cuáles serán estas propiedades antes de la mano.

¿Algunas ideas?



Si es un objeto dinámico, creo que puedes hacer algo como esto:

var obj:Object; // I''m assuming this is your object for(var id:String in obj) { var value:Object = obj[id]; trace(id + " = " + value); }

Así es como se hace en AS2, y creo que todavía funciona para objetos dinámicos en AS3. Creo que las propiedades que mostrará son más limitadas en objetos no dinámicos.



para mí fue útil solo esto:

trace(''obj = ''+getProperties(obj)); public static function getProperties(obj:*):String { var p:*; var res:String = ''''; var val:String; var prop:String; for (p in obj) { prop = String(p); if (prop && prop!=='''' && prop!=='' '') { val = String(obj[p]); if (val.length>10) val = val.substr(0,10)+''...''; res += prop+'':''+val+'', ''; } } res = res.substr(0, res.length-2); return res; }

y obtienes algo como esto:

obj = m:email@ra..., r:true


puede usar un ciclo for .. in para obtener los nombres de las propiedades, o un para cada .. in loop para obtener los valores de las propiedades ...

for( var o : * in object){ trace( o + " = " + object[o] ); } /************* OR ******************/ for each( var o : * in object ){ trace( "object has property: " + o ); }



// this method will work for retrieving properties of a *non-dynamic* (typed) object // @return - all object properties public function getProperties(_obj : *) : Array { var _description : XML = describeType(_obj); var _properties : Array = new Array(); for each (var prop:XML in _description.accessor) { var _property : Object = new Object(); _property.name = String(prop.@name); _property.type = String(simple_type(prop.@type)); _property.access = String(prop.@access); _property.declaredBy = String(prop.@declaredBy); try { _property.value = _obj[_property.name]; } catch (e : Error) { _property.value = ""; } _properties.push(_property) } _properties.sortOn("name"); return _properties; } // better format for object class information private function simple_type(_type : String) : String { var lastIndex : int = _type.lastIndexOf("::"); _type = lastIndex > 0 ? _type.substr(lastIndex + 2) : _type; return _type; }