Mestniydevil
@Mestniydevil

Как проверить, есть ли свойство у вложенного объекта?

Как проверить есть ли свойство у объекта?

var id = e.path[1].attributes.uid.textContent;

Надо проверить, есть ли свойство. Если нету, то return false, а то в консоль ошибку кидает. Как от неё избавится? По тому как есть такие же объекты, но без данного свойство.
  • Вопрос задан
  • 153 просмотра
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
const getNested = (root, path) => path.split('.').reduce((p, c) => p != null ? p[c] : p, root);

const id = getNested(e, 'path.1.attributes.uid.textContent');

Или есть такая штука (UPD. Теперь и браузерами поддерживается):

// можно немного сократить функцию извлечения вложенных значений
const getNested = (root, path) => path.split('.').reduce((p, c) => p?.[c], root);

// а можно и вообще отказаться от этой функции, смысла в ней теперь немного
const id = e?.path?.[1]?.attributes?.uid?.textContent;
Ответ написан
Комментировать
Комментировать
monochromer
@monochromer
DIVeloper
Эта называется в программировании Null Safe.
Пример кода, как сделать:
var id = e && e.path && e.path.length > 0 &&  e.path[1] && ... false
// ну вы поняли

У lodash есть метода для этого - https://lodash.com/docs/4.17.11#get
Статьи на тему:
- https://dev.to/pichardoj/optional-null-safe-in-jav...
- https://dev.to/pichardoj/optional-null-safe-in-jav...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы