为错误 'Cannot read property '...' of undefined' 动态使用 hasOwnProperty

Using hasOwnProperty dynamically for error 'Cannot read property '...' of undefined'

我遇到错误

Cannot read property 'billingDate' of undefined

installment这里是undefined

response.detailsResponse.installment.billingDate

我想使用 hasOwnProperty 但以动态方式使用,就像我将路径和对象(以检查)传递给函数一样,它会进行以下检查并 return true 或 false。

function checkProperty(path, obj){
    //assuming path = response.detailsResponse.installment.billingDate
    //assuming obj = response [a json/object]

    //check if response.detailsResponse exists
    //then check if response.detailsResponse.installment exists
    //then check if response.detailsResponse.installment.billingDate exists
}

路径 length/keys 可以变化。

代码必须优化和通用。

您可以通过以下方式重写函数

    function checkProperty(path,obj){
      splittedarr = path.split('.');
      var tempObj = obj;
      for(var i=1; i<splittedarr.length; i++){
        if(typeof tempObj[splittedarr[i]] === 'undefined'){
         return false;
        }else{
         tempObj = tempObj[splittedarr[i]];
        }
      }
      return true;
     }

从索引 1 开始,根据您的示例,response.detailsResponse.installment.billingDate 中的 response 对于 path 似乎与传递给的 obj 相同函数。