我混淆了使用数组和扩展语法的对象解构。下面的编辑可以递归解包嵌套对象。
let nextLevel = Object.values(obj)
return goingDeep(...nextLevel)
以下是最初的问题,如果另一个像我这样的菜鸟遇到这个问题,我会留下它,帮助他们避免被否决;p
尝试以递归方式解构嵌套对象返回未定义。把它放在一边,只是试图将同一个对象解构为不同的变量会返回 undefined。
保持简单,只需假设每层有一个键:值(对象),因此无需迭代。
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}),我已成功将其用于数组,所以很明显我误解了解构对象的基本原理
撒科打诨
潇潇雨雨
相关分类