@Maloy123

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

var obj = {
  a: {
    b: ['Есть значение']
  }
};


Вот так все работает как и должно, но это не удобно при проверке объекта с большой глубиной
if(obj.a && obj.a.c && obj.a.c[0]) {
	console.log(obj.a.c[0]);
}


А вот так выдаст ошибку: "TypeError: obj.a.c is undefined"
if(obj.a.c[0]) {
	console.log(obj.a.c[0]);
}
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
function isPathDefined(obj, path) {
  var parts = path.split('.');
  var target = obj;
  for(var i = 0, n = parts.length; i < n; i++) {
    if(!target[parts[i]]) {
      return false;
    }
    target = target[parts[i]];
  }
  return true;
}

if(isPathDefined(obj, 'a.c.0')) {
  console.log(obj.a.c[0]);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@tommy_13
if(typeof obj.a.c[0] == 'undefined') {}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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