迭代JSON对象

时间:2012-07-31 10:11:33

标签: javascript

我有以下JSON对象:

{
  "a1_1_on" : "on",
  "a1_1_thr" : "",
  "a1_2_on" : "on",
  "a1_2_thr" : "",
}

我希望使用for循环检查字段,例如:

for (var i=1; i<2; i++) {
    //alarm
    var al = 'ai_' + i + '_on';
    //alarm threshold
    var althr = 'ai_' + i + '_thr'

    //console.log(form_infos.al);

    if(form_infos.al == "on" && form_infos.althr == "") {
        alert("Alarm for Analog " + i + "is on and you did not specified a threshold. Please specify a threshold before submittiing");
        return false;
    }
}

但如果我undefined,则会显示console.log(form_infos.al)。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您的代码中存在多个错误。

首先,在JSON中:''在键和值之间使用,所以它必须是

{
  "a1_1_on": "on",
  "a1_1_thr": "",
  "a1_2_on": "on",
  "a1_2_thr": "",
}

顺便说一下,这不是JSON,而是一个简单的Javascript对象。 JSON将是该Object的String表示。

第二,您索引元素的字符串有拼写错误,您有

 "a1..."
在您的对象中

但您使用

 var al = 'ai_' + i + '_on';
代码中的

(我代替1)

第三,al不是form_infos的子对象,而是包含字符串的变量。要使用字符串索引访问子对象,请使用

form_infos[al]

而不是

form_infos.al

就是这样

答案 1 :(得分:1)

我会使用jQuery。例如:

var obj = {
  "a1_1_on" : "on",
  "a1_1_thr" : "",
  "a1_2_on" : "on",
  "a1_2_thr" : ""
}

$.each(obj,function(i,value) {
    ...
});

jQuery each reference