2017-04-08 30 views
0

使用hasOwnProperty動態的錯誤「無法讀取屬性」 ...我收到錯誤「未定義」

無法讀取未定義

分期付款的特性‘billingDate’這裏是undefined

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 
} 

路徑長度/鍵可以變化。

該代碼必須優化和通用。

回答

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爲依據,以你的例子似乎開始喜歡在response.detailsResponse.installment.billingDateresponsepath作爲傳遞給函數的obj是一樣的。

+0

非常感謝。 –