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))