JS Объекты. Упростить вложенные объекты

Нужно упростить этот объект чтобы все ключи (x,y,z,k,p) были на одном уровне?

obj = { 
    x: 10,
    y: 20, 
    inner: { 
        x: 20,
        z: 30 
    }, 
    foo2: { 
        k: 23,
        p: 13 }
} 

Ответы (1 шт):

Автор решения: Alexander Lonberg

let obj = {
  x: 10,
  y: 20,
  inner: { x: 20, z: 30 },
  foo2: { k: 23, p: 13 }
};

(function recursion(o) {
  for (let [p, v] of Object.entries(o)) {
    (typeof v === 'object' && v !== null)
      ? (delete obj[p], recursion(v))
      : obj[p] = v
  }
})(obj)

console.log(obj)

→ Ссылка