@iharaleynikov

Как рекурсивно обойти древовидный объект?

Допустим, что есть объект древовидной структуры:

const obj = {
  something: {
    something1: 'value',
    something2: 'value1',
    something3: {
      something4: 'value2'
    }
  }
};

Я хочу рекурсивно пройтись по нему и получить, например, только ключи объекта. Как это сделать? Помогите пожалуйста.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 2
VlasenkoFedor
@VlasenkoFedor
Программист: php, js, go
const obj = {
  something: {
    something1: 'value',
    something2: 'value1',
    something3: {
      something4: 'value2'
    }
  }
}
const getKeys = obj => {
  const res = []
  for (const key in obj) {
    res.push(key)
    obj[key] && Object.getPrototypeOf(obj[key]) === Object.prototype && res.push(...getKeys(obj[key]))
  }
  return res
}
console.log(getKeys(obj))
//[ 'something', 'something1', 'something2', 'something3', 'something4' ]

Вариант
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const getKeys = obj =>
  obj instanceof Object
    ? Object.entries(obj).flatMap(n => [ n[0], ...getKeys(n[1]) ])
    : [];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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