Quiero verificar mi función si un argumento pasado de tipo objeto está vacío o no. A veces está vacío, pero aún no es nulo, por lo que no puedo confiar en la condición nula. ¿Hay alguna propiedad como 'longitud'/'tamaño' para objetos flexibles que puedo usar aquí? Por favor ayuda. Gracias de antemano.Para verificar si un objeto está vacío o no
Respuesta
Si se refiere a si un objeto no tiene propiedades:
var isEmpty:Boolean = true;
for (var n in obj) { isEmpty = false; break; }
Gracias por la ayuda, fue realmente útil, pero todavía no podemos tener algún método incorporado como: "myObj.length"/'myObj.isEmpty' Gracias de nuevo. – Ashine
Vas a tener que extender la clase 'Object' o la clase' Dictionary' para obtener un método "incorporado" para eso :) – Amarghosh
Hay parcheo, pero eso se rompe para ... en loops, que ... bueno ... . ya sabes. –
esto es algún artilugio grave, pero que puede utilizar:
Object.prototype.isEmpty = function():Boolean {
for(var i in this)
if(i != "isEmpty")
return false
return true
}
var p = {};
trace(p.isEmpty()); // true
var p2 = {a:1}
trace(p2.isEmpty()); // false
wow, eso es un truco interesante. Me acabas de enviar en una misión para aprender sobre el prototipo de miembro. No estoy seguro de cómo podría usarlo, pero es un poco interesante saberlo. – JStriedl
Intento evitar prototipos, porque el compilador flex se queja mucho. Y debo admitir que soy un adicto a la autocompletar ... – sharvey
posiblemente verifique usando 'this.hasOwnProperty (i)', en el caso de otros miembros del prototipo. –
depende de lo que su objeto es, o más bien lo que espera es tener Por ejemplo, si se supone que el objeto de contener alguna propiedad llamada nombre que está buscando, es posible hacer
if(objSomeItem == null || objSomeItem.name == null || objSomeItem.name.length == 0)
{
trace("object is empty");
}
o si su objeto es en realidad supone que ser otra cosa, como una matriz que podría hacer
var arySomeItems = objSomeItem as Array;
if(objSomeItem == null || arySomeItems == null || arySomeItems.length == 0)
{
trace("object is empty");
}
también es posible usar otras formas a través de la reflexión, como ObjectUtil.getClassInfo, a continuación, enumerar las propiedades para comprobar si hay valores establecidos .... esto ayuda clase:
import flash.utils.describeType;
import flash.utils.getDefinitionByName;
public class ReflectionUtils
{
/** Returns an Array of All Properties of the supplied object */
public static function GetVariableNames(objItem:Object):Array
{
var xmlPropsList:XMLList = describeType(objItem)..variable;
var aryVariables:Array = new Array();
if (xmlPropsList != null)
{
for (var i:int; i < xmlPropsList.length(); i++)
{
aryVariables.push(xmlPropsList[i][email protected]);
}
}
return aryVariables;
}
/** Returns the Strongly Typed class of the specified library item */
public static function GetClassByName($sLinkageName:String):Class
{
var tObject:Class = getDefinitionByName($sLinkageName) as Class;
return tObject;
}
/** Constructs an instance of the speicified library item */
public static function ConstructClassByName($sLinkageName:String):Object
{
var tObject:Class = GetClassByName($sLinkageName);
//trace("Found Class: " + tMCDefinition);
var objItem:* = new tObject();
return objItem;
}
public static function DumpObject(sItemName:String, objItem:Object):void
{
trace("*********** Object Dump: " + sItemName + " ***************");
for (var sKey:String in objItem)
{
trace(" " + sKey +": " + objItem[sKey]);
}
}
//}
}
Otra cosa a tener en cuenta es que puede usar un bucle for para verificar las propiedades de un objeto, eso es lo que está haciendo esta función dumpobject.
puede utilizar utilizar el método hasProperty para comprobar la longitud
var i:int = myObject.hasProperty("length") ? myObject.length: 0;
También puede probar:
ObjectUtil.getClassInfo(obj).properties.length > 0
Lo bueno de esto es que GetClassInfo le da mucha más información sobre el objeto, p.ej. obtienes los nombres de todas las propiedades en el objeto, que pueden ser útiles.
Gracias U :) Redujo mi esfuerzo ... – Prax
Si el objeto contiene algo de 'texto' pero as3 no lo reconoce como una Cadena, conviértalo en una cadena y verifique si está vacío.
var checkObject:String = myObject;
if(checkObject == '')
{
trace('object is empty');
}
Usted puede comprobar directamente como seguimiento,
var obj:Object = new Object();
if(obj == null)
{
//Do something
}
Robé esto desde una pregunta similar en relación con JS. Requiere FP 11+ o una biblioteca JSON.as.
function isEmptyObject(obj){
return JSON.stringify(obj) === '{}';
}
- 1. para verificar si todo EditText está vacío
- 2. Python: compruebe si un archivo está vacío o no
- 3. ¿Cómo verificar si jQuery datepicker está vacío?
- 4. ¿Cómo puedo verificar si un JSON está vacío en NodeJS?
- 5. ¿Cómo verificar si un objeto está definido?
- 6. Cómo verificar si dynamic está vacío.
- 7. cómo verificar si un hash está vacío en perl
- 8. cómo se comprueba si UIWebView está vacío o no
- 9. Prueba si el objeto WP_Query está vacío
- 10. Magento ¿Cómo verificar si el carrito de la compra está vacío o no?
- 11. ¿Cómo puedo verificar con seguridad si el nodo está vacío o no? (Symfony 2 orugas)
- 12. compruebe si NSNumber está vacío
- 13. Unir coma si no está vacío o nulo
- 14. Desactivar/Activar NSButton si NSTextfield está vacío o no
- 15. C++: ¿cómo puedo verificar si el buffer cin está vacío?
- 16. sesión de Comprobación de si está vacío o no
- 17. php no puede verificar si un resultado de PDO está vacío usando empty() devuelve FATAL ERROR
- 18. Objeto Ruby String vacío o no?
- 19. Mongo Engine - Query - Cómo comprobar si un ListField está vacío o no configurado
- 20. ¿Cómo verifico si un repositorio está vacío?
- 21. Usando una instrucción if para verificar si un div está vacío
- 22. Javascript: Comprobación de si un objeto no tiene propiedades o si un mapa/asociativo-matriz está vacía
- 23. ¿Debo verificar si un objeto es nulo primero o segundo?
- 24. Comprobación de si un vector está vacío
- 25. error: el archivo objeto está vacío .git/objects /../ .. está vacío - fatal: objeto suelto ... está dañado
- 26. ¿Cómo comprobar si el objeto JSON está vacío en PHP?
- 27. Verificar si un ejecutable está firmado o no (signtool usado para firmar ese exe)
- 28. jquery: si ul está vacío
- 29. Comprueba si un BSTR está vacío
- 30. AS3: compruebe si un diccionario está vacío
He resuelto su pregunta con las colecciones. Tu pregunta es un poco vaga, quizás puedas aclararla para obtener más/mejores respuestas. ¿Está utilizando una instancia de objeto como una matriz asociativa? Si necesita un conteo, quizás use la clase Array. Si describes el contexto un poco mejor, será más fácil responder. –
Si usa una matriz asociativa, obtiene exactamente lo mismo que un objeto. La propiedad de longitud siempre devolverá 0 sin importar cómo se completen las claves. – sharvey
Me refiero a no usar una matriz asociativa, sino cambiar el código para usar una matriz normal. Una matriz asociativa indica que usted sabe qué valores están almacenados y, por lo tanto, normalmente no necesitará contarlos. Pero es difícil de decir sin más detalles. –