Задать вопрос
@MrDrap

Как сделать правильно рекурсию?

Есть объект:

let entityTree = {
  account: ['account_subscriptions', 'device'],
  device: 'device_subscriptions'
}

Если приходит account, то должен получиться следующий массив:

['account', 'account_subscriptions', 'device', 'device_subscriptions']
  • Вопрос задан
  • 180 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Рекурсия есть:

const getEntities = key =>
  entityTree.hasOwnProperty(key)
    ? [ key, ...[].concat(entityTree[key]).flatMap(n => getEntities(n) ?? n) ]
    : null;

Рекурсии нет:

function getEntities(key) {
  if (!entityTree.hasOwnProperty(key)) {
    return null;
  }

  const result = [];

  for (const stack = [ key ]; stack.length;) {
    const n = stack.pop();
    result.push(n);
    stack.push(...[].concat(entityTree[n] ?? []).reverse());
  }

  return result;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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