Javascript 嵌套对象深化

Javascript 嵌套对象深化,javascript,node.js,object,Javascript,Node.js,Object,我有包含嵌套对象的数据。 例如,在演示值下面共享 const input = { a: 'jack', b: { c: 'sparrow', d: 'hahaha' } } 现在,我希望所有嵌套值处于同一级别。像这样 const input = { a: 'jack', c: 'sparrow', d: 'hahaha' } 我尝试过这个,但输出错误 const getEntries = (o, prefix = '') => Object

我有包含嵌套对象的数据。 例如,在演示值下面共享

const input = {
  a: 'jack',
  b: {
    c: 'sparrow',
    d: 'hahaha'
  }
}
现在,我希望所有嵌套值处于同一级别。像这样

const input = {
  a: 'jack',
  c: 'sparrow',
  d: 'hahaha'
}
我尝试过这个,但输出错误

const getEntries = (o, prefix = '') => 
  Object.entries(o).flatMap(([k, v]) => 
    Object(v) === v  ? getEntries(v, `${prefix}${k}.`) : [ [`${prefix}${k}`, v] ]
  )

console.log(
  Object.fromEntries(getEntries(input))
)

output:-
{
a:"jack",
b.c:"sparrow",
b.d.e:"hahaha"
}

提前使用Thanx。

这应该有效

    const flattenObject = (ob) => {
    var toReturn = {};
    for (var i in ob) {
        if (!ob.hasOwnProperty(i)) continue;
        
        if ((typeof ob[i]) == 'object') {
            var flatObject = flattenObject(ob[i]);
            for (var x in flatObject) {
                if (!flatObject.hasOwnProperty(x)) continue;
                toReturn[x] = flatObject[x];
            }
        } else {
            toReturn[i] = ob[i];
        }
    }
    return toReturn
}

你可以把问题的目的分开

  • 要获取所有平面条目
  • 返回一个条目对象
getFlatEntries
用作网络对象的递归,并返回键/值对的flatt数组

getFlat
获取一个对象并从平面条目返回所需的平面对象

const
getFlatEntries=object=>object.entries(object.flatMap([k,v])=>v&&typeof v===“object”?getFlatEntries(v):[[k,v]]),
getFlatEntries=object=>object.fromEntries(getFlatEntries(object))
输入={a:'jack',b:{c:'sparrow',d:'hahaha',e:{f:'most INTERNAL'}},
flat=getFlat(输入);

控制台。原木(平)什么不起作用?请添加您的代码。@NinaScholz添加了我的代码,请看。塔克斯。
output = {}

function unnest_obj(new_obj,obj){
  for (let x in obj) {
    if(typeof obj[x] === "object") unnest_obj(new_obj,obj[x])
    
    else new_obj[x] = obj[x]
  }
}

unnest_obj(output,input)
//console.log(output)