Проверьте, доступен ли ключ во Flex - PullRequest
3 голосов
/ 17 ноября 2010

У меня есть словарь с объектами в качестве ключей. Как я могу проверить, доступен ли конкретный объект в словаре?

Ответы [ 5 ]

19 голосов
/ 18 сентября 2011

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

Я считаю, что это более правильный ответ, чем приведенный выше.

4 голосов
/ 17 ноября 2010

Вы можете использовать синтаксис массива и посмотреть, если значение равно нулю,

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

Если допустимы значения NULL, используйте метод hasOwnProperty .

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

Adobe, почему у вас нет функции keyExists ()?

3 голосов
/ 27 сентября 2015

Самый правильный способ - сравнить возвращаемое значение с undefined:

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

как ключ со значением null может существовать в словаре.

Здесь - хорошая статья, объясняющая тему.

3 голосов
/ 17 ноября 2010
var b:Dictionary = new Dictionary();

if(b[key] != null) {

}
1 голос
/ 28 апреля 2017

Вы можете использовать in для проверки существующих ключей:

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

Он также работает с ключами объекта:

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

Обратите внимание, что "obj" должен существоватьобъект (определенный или нет), иначе он не скомпилируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...