已知let str = 'a.b.c.d.e'(长度不确定),生成固定格式json对象

已知let str = 'a.b.c.d.e'(长度不确定),值为3,生成固定格式json对象,如
let str = 'a.b.c.d.e', let value = 3 生成固定格式json对象

{
    a:{
        b:{
            c:{
                d: {
                    e: 3
                }
            }
        }
    }
}
阅读 3k
3 个回答

用 Lodash 一句搞定

let str = 'a.b.c.d.e';
let value = 3;

let result = _.set({}, str, value);
// {"a":{"b":{"c":{"d":{"e":3}}}}}

可以用 reduce 处理。

function strConvert(str, value) {
  return str.split(".").reverse().reduce((p, n) => {
    return p ? p = {[n] : p} : p = {[n]: value};
  }, null)
}
let keys = str.split('.')
let tmp = result = {}
let end = keys.length - 1
keys.forEach((key, idx) => {
    tmp = tmp[key] = idx === end ? value : {}
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题