对象 {a:{b:{c:{}}}}}如何转换成a.b.c

对象 {a:{b:{c:{}}}}}如何转换成a.b.c这种形式

阅读 3.6k
2 个回答

就这样吧,呵呵

const obj = {
    a: {
        b: {
            c: {}
        }
    }
}

const val = JSON.stringify(obj).match(/{".*?":/g).map(item => item.replace(/{"(.*?)":/, "$1")).join('.')

console.log(val)
import _ from "lodash";

const origin = { a: { b: { c: {}, d: 2 }, e: "hello" } };

// isPlainObject 代码比较多,懒得自己写,用 Lodash 或者 jQuery 等库提供的工具来判断
// 如果想自己写参照 Lodash 或者 jQuery 的源码

function flatObject(obj) {
    return Object.fromEntries(
        Object.entries(obj)
            .flatMap(([key, value]) => {
                if (_.isPlainObject(value) && !_.isEmpty(value)) {
                    return Object.entries(flatObject(value)).map(([k, v]) => [`${key}.${k}`, v]);
                }
                return [[key, value]];
            })
    );
}

console.dir(flatObject(origin));
// {
//     "a.b.c": {},
//     "a.b.d": 2,
//     "a.e": "hello"
// };
推荐问题