Как вы получаете динамический доступ к атрибутам объекта JSON - PullRequest
1 голос
/ 18 февраля 2010

У меня есть двухуровневый объект JSON

EX:

  var regexDefs = { 

      "alpha": {
          "regex"  : /^[A-Z]+$/,
          "errMsg" : "Alpha Only" }
      }

Я хочу сделать что-то похожее на поиск ключа в массиве.

(с использованием inQray в jQuery)

var key = "alpha";
alert($.inArray(key,regexDefs));

если ключ находится в массиве, тогда я хочу сделать

if(regexDefs[key].regex.test){ return true; }

Я знаю, что, может быть, я что-то упускаю, потому что это объект, а не массив

делает

$.inArray(key,regexDefs)

возвращает неопределенное значение

= /

Есть мысли?

Ответы [ 4 ]

6 голосов
/ 18 февраля 2010

Самый точный способ -

if ("alpha" in regexDefs)
{
}

Это оценило бы значение true, даже если alpha было значением Фолси, таким как 0, null, NaN, false и т. Д.

Вы можете сделать то же самое с переменной:

var key = "alpha";
if (key in regexDefs)
{
}
3 голосов
/ 18 февраля 2010

Просто сделай:

if (regexDefs[key]) {
    // Present.
} else {
    // Not present.
}

Чтобы узнать больше о JSON, я могу порекомендовать вам Освоение JSON .

2 голосов
/ 18 февраля 2010

Если ключ хранится в переменной с именем key, вы можете использовать что-то вроде:

if(regexDefs[key]) {
    // do your thing
}
2 голосов
/ 18 февраля 2010
if (regexDefs['alpha']) {
    // alpha exists in regexDefs
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...