ForEach的最后一项未定义

时间:2016-08-17 13:04:40

标签: javascript node.js loops express strongloop

这是我的代码:

useraccountprofileJSON.providerprofile.openinginfo.forEach(function(instance_1){
                                    instance_1.openingdetail.openingapplication.forEach(function(instance_2){
                                        console.log(instance_2);
                                        if(instance_2.oaid == oaid){
                                            isowner = true;
                                        }
                                    });
                                }); 

当我执行此操作时,我收到以下错误:

  

[TypeError:无法读取未定义的属性'openingapplication']

错误是因为forEach迭代中的最后一项(即last lasttail)未定义。

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以通过替换:

解决此问题
instance_1.openingdetail.openingapplication.forEach

使用:

instance_1.openingdetail && instance_1.openingdetail.openingapplication.forEach

备注

如果您的代码的目的只是设置isowner值,那么您可以使用some,它会在找到一个oid匹配后立即退出:

isowner = useraccountprofileJSON.providerprofile.openinginfo.some(function(instance_1){
    return instance_1.openingdetail && 
           instance_1.openingdetail.openingapplication.some(function(instance_2){
        return instance_2.oaid == oaid;
    });
});