const origin = { a: { b: { c: {s: 5}}, e: "hello" }};
function flatObj(o) {
const res = {}
const flat = (obj, preKey) => {
Object.entries(obj).forEach(([key, value]) => {
// preKey默认是'', 如果是递归入口 preKey有值 需要加 . 或者 [] 分割
let newKey = preKey?preKey+'.'+key:key;
// 引用类型继续递归拍平, 基本类型设置到结果对象上
if (value && typeof value === 'object') {
return flat(value, newKey)
}
res[newKey] = value
})
}
flat(o,'')
return res
}
console.log(flatObj(origin))