2010-11-17 5 views

Répondre

3
var b:Dictionary = new Dictionary(); 

if(b[key] != null) { 

} 
+2

Dans ce cas, la clé est disponible dans le dictionnaire, mais elle a une valeur nulle? – user297159

4

Vous pouvez utiliser la syntaxe de tableau et si la valeur est nulle,

assertTrue(myDict["key"] == null) 

Si les valeurs NULL sont autorisées des valeurs, utilisez la méthode hasOwnProperty.

assertTrue(myDict.hasOwnProperty("key")==true) 

Adobe, pourquoi n'avez-vous pas une fonction keyExists()?

+0

+1 pour 'hasOwnProperty'. Très précieux. –

+2

hasOwnProperty fonctionne lorsque la clé est une chaîne mais ne fonctionne pas si elle est un objet –

18

hasOwnProperty ne fonctionnera pas si la clé est un objet plutôt qu'une chaîne. Vérifier que la valeur est nulle ne fonctionnera pas si la clé est dans le dictionnaire, mais avec une valeur nulle.

L'opérateur 'in' semble fonctionner tout le temps.

var d:Dictionary = new Dictionary(); 
var a:Object = new Object(); 
d[a] = 'foo'; 
var b:Object = new Object(); 
d[b] = null; 
var c:Object = new Object(); 
trace(a in d); 
trace(b in d); 
trace(c in d); 

Retours

true 
true 
false 

Je crois que c'est une réponse 'plus correcte' que celui affiché ci-dessus.

3

La façon la plus appropriée est de comparer la valeur retournée avec undefined:

if (dict["key"] !== undefined) 
{ 
    // do code when value does exist 
} 

comme une clé avec une valeur associée null pourrait exister dans un dictionnaire.

Here est un bon article qui explique le sujet.

0

Vous pouvez utiliser in pour vérifier les clés existantes:

if ('key' in dict) 
{ 
    // do something 
} 

Il fonctionne avec des clés d'objet ainsi:

if (obj in dict) 
{ 
    // do something 
} 

Notez que « obj » doit être un objet existant (défini ou non) ou il ne compilera pas. Que se passe-t-il si j'ai explicitement défini b [clé] = null;

Questions connexes