【问题标题】:How transform string to recursive object? [duplicate]如何将字符串转换为递归对象? [复制]
【发布时间】:2021-03-18 09:48:37
【问题描述】:

我将一个点分隔的字符串传递给函数

console.log( namespace('a.b.c.d.e'))

并期待得到下一个结果

//result => "{"a":{"b":{"c":{"d":{"e":{}}}}}}"

我的尝试(我不知道如何递归)

const namespace = (string)=> {
  return string.split('.').reduce((acc,el)=>{
    acc[el] = {}
  },{})
}

【问题讨论】:

  • 我可能会使用 reduceRight 之类的东西从内到外构建对象:...reduceRight((acc, prop) => ({[prop]: acc}),{})
  • 很好,这正是我试图找到的,添加这个答案

标签: javascript


【解决方案1】:

const input = "a.b.c.d.e"

const output = input.split('.').reverse().reduce((acc,el)=>{
  return {[el]: acc}
},{})
  
console.log(output)

【讨论】:

    【解决方案2】:

    下面的迭代方法怎么样:-

    function namespace(input){
    let result = {};
    let temp = result;
    const inputArr = input.split(".");
    inputArr.forEach((ele)=>{
      temp[ele] = {};
      temp = temp[ele];
    })
    return result;
    }
    
    console.log( namespace('a.b.c.d.e'))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 2015-10-27
      • 1970-01-01
      相关资源
      最近更新 更多