JavaScript在JSON对象中处理null的正确方法

时间:2014-04-09 17:35:02

标签: javascript arrays object

以下是代码:

for (i = 0; i < data.RecruitingGroups.length; i++) {
        data.RecruitingGroups[i].id = i;

        if (data.RecruitingGroups[i].Rule.Rules != null) {
            for (j = 0; j < data.RecruitingGroups[i].Rule.Rules.length; i++) {
                data.RecruitingGroups[i].Rule.Rules[j].id = j;
            }    
        } 
    }

问题是有时候RecruitingGroups []。规则为空。所以我尝试在继续并运行下一个for循环之前验证它不是null,但它仍然会抛出错误:

未捕获的TypeError:无法读取属性“规则”为null

如何绕过此错误。

3 个答案:

答案 0 :(得分:1)

您正在测试Rule.Rulesnull。那不是问题; Rule 本身null,错误消息就是证明。如果其中任何一个都可以为空,则需要同时测试RuleRule.Rules

尝试

if (data.RecruitingGroups[i].Rule && data.RecruitingGroups[i].Rule.Rules) {

答案 1 :(得分:1)

你的第二个循环需要增加j++而不是i++。 =)

答案 2 :(得分:-1)

 if (data.RecruitingGroups[i].Rule && data.RecruitingGroups[i].Rule.Rules) {
        for (j = 0; j < data.RecruitingGroups[i].Rule.Rules.length; i++) {
            data.RecruitingGroups[i].Rule.Rules[j].id = j;
        }    
    }