如何从对象的嵌套对象中提取键和值?

Sae*_*oja 0 javascript arrays object

这是我上次采访中的一个问题,我正在尝试解决这个问题:在这种情况下,我想捕获嵌套对象中的值并将它们记录到控制台中。

const obj1 = {
  foo: 1,
  bar: {
    foo1: 2,
    bar1: {
      foo2: {
        foo3: 3,
        bar2: 4
      },
      bar3: 5
    }
  }
};

// output: [1,2,3,4,5] //
Run Code Online (Sandbox Code Playgroud)

实际上,我的意思是以专业的方式。不是用这种方式:

[obj1.foo, obj1.bar.foo1, obj1.bar.bar1.foo2.foo3, obj1.bar.bar1.foo2.bar2, obj1.bar.bar1.bar3]
Run Code Online (Sandbox Code Playgroud)

小智 6

你可以做这样的事情

const obj1 = {
  foo: 1,
  bar: {
    foo1: 2,
    bar1: {
      foo2: {
        foo3: 3,
        bar2: 4
      },
      bar3: 5
    }
  }
};

const getValues = (data, values= []) => {
  if(typeof data !== 'object'){
    return [...values, data]
  }
  return Object.values(data).flatMap(v => getValues(v, values))
}

console.log(getValues(obj1))
Run Code Online (Sandbox Code Playgroud)