Итерация по объекту javascript с созданными именами переменных - PullRequest
1 голос
/ 28 июля 2010

Я пытаюсь перебрать кучу переменных в объекте javascript (используя jQuery), который был возвращен через JSON, без необходимости указывать имя каждой переменной.следующие элементы объекта и проверить их значения:

obj.pract_0
obj.pract_1
obj.pract_2
obj.pract_3
..
..
obj.pract_100

Я пытаюсь использовать следующий подход:

for (var i = 0; i < 10; i++) {
  var pract_num = ++window['obj.pract_' + i];
  if (pract_num == 1) {
    var pract = '#pract_' + i;
    $(pract).attr('checked', 'checked');
  }
}

Я получаю NaN из этого, есть ли ещеспособ сделать это?Мои проблемы явно из var pract_num = ++window['obj.pract_' + i];, и я не уверен, правильно ли я это делаю.

Я бы предпочел не изменять код, который генерирует JSON, хотя я не совсем уверенкак бы я это сделал.

Ответы [ 2 ]

3 голосов
/ 28 июля 2010

Просто указывайте obj напрямую, вместо того чтобы проходить через window ...

var obj = window['myObj']; // if needed

for (var i = 0; i < 10; i++) { 
  var pract_num = ++obj['pract_' + i]; // magic
  if (pract_num == 1) { 
    var pract = '#pract_' + i; 
    $(pract).attr('checked', 'checked'); 
  } 
}

Вы получаете NaN, потому что вы пытаетесь увеличить (++) ссылку на что-то нечисловой.

0 голосов
/ 28 июля 2010
for (var p in obj) {
    var pract = obj[p];
    if (???) {
        $('#'+p).attr('checked', 'checked');
    }
}

то, что вы делаете вокруг pract_num, кажется сломанным или ошибочным, по крайней мере, без дополнительного контекста.

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