Задать вопрос
logicface
@logicface
Начинающий

Как внутри рекурсии создать результирующий массив из значений вложенных объектов?

Всем привет. Я учусь рекурсии и мне она очень трудно дается. Добраться до каких-то значений во вложенном дереве или делать какие-то простые вещи вроде факториалов я могу. Но когда нужно создать что-то результирующее из этих значений используя объявленные переменные внутри рекурсии, то я не понимаю как это реализовать. Например:
let users = {
  user1: {
    name: 'Mike',
  },
  user2: {
    name: 'Tom',
    user3: {
      name: 'David',
    },
  },
}

let result = []

function recur(obj) {
  for (let key in obj) {
    if (typeof obj[key] !== 'object') {
      result.push(obj[key])
    } else recur(obj[key])
  }
  return result
}

console.log(recur(users)) // Результирующий, но конечная переменная вне рекурсии
console.log(result) // Результирующий массив

Как это переписать таким образом, чтобы let result = [] не находилось вне рекурсии? То есть чтобы рекурсия сама создавала результирующую переменную и в итоге отдавала ее.
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой Комментировать
Решение пользователя Alexandroppolus К ответам на вопрос (2)
Alexandroppolus
@Alexandroppolus
кодир
как вариант:

function recur(obj, result = []) {
  for (let key in obj) {
    if (typeof obj[key] !== 'object' || obj[key] === null) {
      result.push(obj[key])
    } else recur(obj[key], result)
  }
  return result
}
Ответ написан