Проверка определенности полей вложенного объекта в Javascript

Возьмите такой объект

book.chapter.paragraph.sentence.word

предположим, вы хотите получить определенное слово

book[6][3][15][3]

чтобы быть уверенным, чтобы ссылаться на существующее слово, вы действительно должны выполнить проверку, как это…

if(typeof book[6] !== "undefined" && typeof book[6][3] !== "undefined" && typeof book [6][3][15] !== "undefined" && typeof book[6][3][15][3] !== "undefined") ...

…или есть лучший способ?

1 ответ

  1. Обычно для динамического доступа к вложенным свойствам требуется выполнить итерационную проверку. Однако для доступа к свойству undefined можно также использовать try catch и анализировать сообщение об ошибке ugliness. Такие как

    try{
    var book = {page111: {paragraph2:{sentence4:{word12:"test"}}}};
        list = ["page112","paragraph2","sentence4","word12"],
        word = book[list[0]][list[1]][list[2]][list[3]];
        console.log(word);
    }catch(e){console.log(list[list.indexOf(e.message.match(/\'(.*)\'/)[1])-1], "is undefined")}

    Я должен согласиться, что это очень некрасиво.