使用生成的变量名称迭代javascript对象

时间:2010-07-28 17:17:59

标签: jquery json

我正在尝试在通过JSON返回的javascript(使用jQuery)对象中迭代一堆变量,而不必指定每个变量名。

我想要做的是遍历对象的以下元素并测试它们的值:

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 个答案:

答案 0 :(得分:3)

直接引用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,因为您尝试增加(++)对非数字内容的引用。

答案 1 :(得分:0)

for (var p in obj) {
    var pract = obj[p];
    if (???) {
        $('#'+p).attr('checked', 'checked');
    }
}

你在pract_num周围所做的事情似乎已被打破或被误导,至少没有额外的背景。