Динамическое использование hasOwnProperty для ошибки "Не удается прочитать свойство"... "из неопределенного"

Я получаю ошибку

Не удается прочитать свойство 'billingDate' из неопределенного

рассрочка здесь не определена

response.detailsResponse.installment.billingDate

Я хочу использовать hasOwnProperty, но динамически, как я передаю путь и объект (для проверки) в функцию, он выполняет следующие проверки и возвращает истину или ложь.

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 ответ

Решение

Вы можете переписать функцию следующим образом

    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 в response.detailsResponse.installment.billingDate за path такой же как obj перешел в функцию.

Другие вопросы по тегам