检查Flex中是否有密钥可用

时间:2010-11-17 20:44:56

标签: flex dictionary

我有一个以对象作为键的字典。如何检查字典中是否有特定对象?

5 个答案:

答案 0 :(得分:19)

如果密钥是对象而不是字符串,

hasOwnProperty将不起作用。

如果键在字典中,但是值为null,则检查该值是否为空。

'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

我认为这是一个比上面发布的更“正确”的答案。

答案 1 :(得分:4)

您可以使用数组语法并查看值是否为null,

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

如果允许空值,请使用hasOwnProperty方法。

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

Adob​​e,为什么你没有keyExists()函数?

答案 2 :(得分:3)

var b:Dictionary = new Dictionary();

if(b[key] != null) {

}

答案 3 :(得分:3)

最恰当的方法是将返回值与undefined进行比较:

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

作为具有null关联值的键可以存在于字典中。

Here是一篇很好的文章,解释了这个主题。

答案 4 :(得分:1)

您可以使用in检查现有密钥:

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

它也适用于对象键:

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

请注意,“obj”必须是现有对象(已定义或未定义),否则将无法编译。