TLDR Edit: я путал деструктуризацию объектов с массивами и распространял синтаксис. При редактировании ниже делается рекурсивная распаковка вложенного объекта.
let nextLevel = Object.values(obj)
return goingDeep(...nextLevel)
Ниже приведен оригинальный вопрос, который я оставлю на тот случай, если другой нуб, такой как я, столкнется с этим, помогите спасти их от отрицательных голосов; p
Попытка деструктурировать вложенный объект рекурсивно возвращает неопределенное. Оставляя это в стороне, просто пытаясь разложить один и тот же объект на разные переменные, вы получите неопределенное значение.
Сохраняя простоту, просто предполагая один ключ: значение (объект) на слой, поэтому не нужно повторять.
const container = {container1: {container2 : {container3: {container4: 'core'}}}}
Отложив на данный момент рекурсию следующих результатов, просто используя два разных задания по деструктуризации ...
const {level1} = container
console.log(level1) // => container1: {container2:{ etc
const {level1_different} = container
console.log(level1_different) // => undefined
это то, что я пытался с помощью рекурсии
const goingDeep = (obj) => {
if (obj.hasOwnProperty('container4')){
obj.container4 = 'found'
return obj
} else {
// let {nextLevel} = obj /no good
// return goingDeep(nextLevel) /no good
let nextLevel = Object.values(obj)
return goingDeep(...nextLevel)
}
}
У
изначально была деструктура с параметром goingDeep = ({obj})
, который я успешно использовал для массивов, так что я совершенно не понимаю, что-то, что является фундаментальным для деструктурирования объектов