SOURCE

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))
console 命令行工具 X clear

                    
>
console