三國(guó)紛爭(zhēng)
2021-07-01 10:00:38
我混淆了使用數(shù)組和擴(kuò)展語(yǔ)法的對(duì)象解構(gòu)。下面的編輯可以遞歸解包嵌套對(duì)象。let nextLevel = Object.values(obj)return goingDeep(...nextLevel)以下是最初的問(wèn)題,如果另一個(gè)像我這樣的菜鳥(niǎo)遇到這個(gè)問(wèn)題,我會(huì)留下它,幫助他們避免被否決;p嘗試以遞歸方式解構(gòu)嵌套對(duì)象返回未定義。把它放在一邊,只是試圖將同一個(gè)對(duì)象解構(gòu)為不同的變量會(huì)返回 undefined。保持簡(jiǎn)單,只需假設(shè)每層有一個(gè)鍵:值(對(duì)象),因此無(wú)需迭代。const container = {container1: {container2 : {container3: {container4: 'core'}}}}暫時(shí)將遞歸放在一邊,以下結(jié)果只是兩個(gè)不同的解構(gòu)賦值......const {level1} = containerconsole.log(level1) // => container1: {container2:{ etcconst {level1_different} = containerconsole.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) }}最初在參數(shù)處進(jìn)行了解構(gòu)goingDeep = ({obj}),我已成功將其用于數(shù)組,所以很明顯我誤解了解構(gòu)對(duì)象的基本原理
2 回答

撒科打諢
TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
你確實(shí)誤解了破壞的工作原理。如果您有一個(gè)對(duì)象,則析構(gòu)允許您創(chuàng)建與對(duì)象中的屬性同名的新變量。
let obj = {
prop1: 'value1',
prop2: 'value2',
};
let {prop1, prop2, prop3} = obj;
console.log(prop1, prop2, prop3)

瀟瀟雨雨
TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
let {nextLevel} = obj
是相同的
let nextLevel = obj.nextLevel;
我想你可能誤解了破壞的作用。
要遞歸,您需要?jiǎng)討B(tài)搜索所有屬性。
const goingDeep = obj => Object.getOwnPropertyNames(obj).reduce( (prop, result) => result === null ? (obj[prop] === 'core' ? obj : goingDeep(obj[prop])) : 結(jié)果, 空);
添加回答
舉報(bào)
0/150
提交
取消