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

Есть код:
let user = {
	firstUser: {
		age: 22
	}
}


function rec(user) {

	for (let key in user) {
		console.log(key)
		if (typeof (user[key]) == "object") {
			rec(user[key]);
		}
	}
}



rec(user)

Результат: firstUser, age
Мне бы хотелось изменить поведение цикла, если объект вложенный (а именно чтобы ключи были заглавными буквами)
То есть: firstUser, AGE

И еще, как объяснить js вот это:
if(уровень вложенности == 3) {сделай вот это}
if(уровень вложенности == 10) {сделай вот это}
  • Вопрос задан
  • 2794 просмотра
Решения вопроса 1
@rotarepmipoleved
let user = {
  firstUser: {
    age: 22
  }
}

function rec(user) {

  for (let key in user) {
    if (typeof (user[key]) == "object") {
      console.log(key)
      rec(user[key]);
    } else {
        console.log(key.toUpperCase())
    }
  }
}

rec(user)

Результат:
firstUser
AGE

По вложенности полагаю примерно так можно сделать:
let user = {
  firstUser: {
    age: 22
  },
  testLevels: {
    is2level: {
        a2level: {
            a3level: 100
        }
    }
  }
}

let level = 1;
function rec(user) {
  switch(level) {
      case 3:
        console.log('Привет, это 3 уровень вложенности');
      break;
      case 10:
        console.log('Привет, 10 уровень');
      break;
  }
  
  for (let key in user) {
    if (typeof (user[key]) == "object") {
      ++level;
      console.log(key)
      rec(user[key]);
    } else {
        console.log(key.toUpperCase())
        level = 0
    }
  }
}

rec(user)


P.S. Если функция планируется использоваться несколько раз - level сбрасывать.
P.S.S. Не самая лучшая реализация, можно улучшить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы