上代码
function flatten (obj) {
const ans = {}
inner(obj, null)
function inner (o, prev) {
for (let key in o) {
if (o[key] instanceof Object) {
if (prev === null) {
inner(o[key], key)
} else {
inner(o[key], prev + '.' + key)
}
} else {
if (prev === null) {
ans[key] = o[key]
} else {
ans[prev + '.' + key] = o[key]
}
}
}
}
return ans
}
let obj = {a:{b:1,c:2,d:{e:5},b:[1,3,{a:2,b:3}],c:3}}
console.log(flatten(obj));
// 最终效果是执行
// {
// a: {
// b: 1,
// c: 2,
// d: {e: 5}
// },
// b: [1, 3, {a: 2, b: 3}],
// c: 3
// }