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)