【发布时间】:2019-04-14 19:06:49
【问题描述】:
我想把下面的东西弄平
let o = {
name: "John",
school: {
name: "Phillps",
}
};
到:
{
name: "John",
schoolName: "Phillps"
}
我的代码是这样的
f= Object.assign({}, ..._flatten(o));
function _flatten(o) {
return [].concat(
...Object.keys(o).map(k =>
typeof o[k] === "object" ? _flatten(o[k]) : { [k]: o[k] }
)
);
}
这会产生
{
name: "Phillps"
}
如您所见,它无法处理嵌套对象中的属性名称冲突。 IE。学生的名字被我学校的名字覆盖了。是否可以修改代码,使深层属性以它们的父对象名称为前缀?
【问题讨论】:
标签: javascript recursion functional-programming