动态使用hasOwnProperty来解决错误'无法读取属性' ...'未定义的'

时间:2017-04-08 22:25:04

标签: javascript undefined hasownproperty

我收到错误

  

无法阅读财产' billingDate'未定义的

分期付款 此处未定义

response.detailsResponse.installment.billingDate

我想使用hasOwnProperty但是以动态的方式,比如我将路径和对象(检查)传递给函数,它执行以下检查并返回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
}

路径长度/键可以变化。

代码必须经过优化和通用。

1 个答案:

答案 0 :(得分:0)

您可以按以下方式重写该功能

    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开始,根据您的示例,responseresponse.detailsResponse.installment.billingDate的{​​{1}}似乎与传递给函数的path相同