Динамическое использование 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
перешел в функцию.