2016-10-04 3 views
0

Возьмите объект как этотПроверка определенность полей вложенного объекта в 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") ... 

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

ответ

0

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

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")}

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

+0

Вы говорите, что ожидается итеративный чек: это была моя первая идея. Я думал, что это будет жестокое решение, но если это норма, как вы подразумеваете, я бы пошел на это. Я предположил, что для такого рода итеративной проверки может быть встроенная функция, которую я как-то пропустил ... – resle

Смежные вопросы