2010-11-17 65 views

回答

3
var b:Dictionary = new Dictionary(); 

if(b[key] != null) { 

} 
+2

如果我明確地設置了b [key] = null;在這種情況下,密鑰在字典中可用,但它的值爲null?對於'hasOwnProperty', – user297159 2010-11-17 20:50:44

4

您可以使用數組語法,看看值爲null,

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

是否允許空值值,使用hasOwnProperty方法。

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

Adob​​e公司,你爲什麼不有keyExists()函數?

+0

+1。非常有價值。 – 2010-11-17 21:06:25

+2

hasOwnProperty在鍵是字符串時工作,但如果鍵是對象則不起作用 – 2011-09-17 20:06:27

18

如果鍵是對象而不是字符串,hasOwnProperty將不起作用。

如果密鑰位於字典中,但是值爲空值,那麼檢查值爲空將不起作用。

'in'運算符似乎一直工作。

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); 

返回

true 
true 
false 

我相信這是一個比上面貼一個 '更正確' 的答案。

3

最正確的方法是返回值與undefined比較:

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

與一個null相關價值的關鍵可能在詞典中存在。

Here是一篇很好的文章,解釋了這個話題。

0

您可以使用in檢查現有的密鑰:

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

它與對象鍵以及:

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

注意,「目標文件」必須是定義或沒有現有對象( )或它不會編譯。

相關問題