这个题怎么解?

新手上路,请多包涵
// 例如:将下面数据
[
    ["a", "aa", "aaa", "aaaa"],
    ["b", "bb", "bbb"],
    ["a", "ab", "aba"],
    ["a", "aa", "aab"]
] 
// 转为:
[
    {
        "name" : "a",
        "child" : [
            {
                "name" : "aa",
                "child" : [
                    {
                        "name" : "aaa",
                        "child" : [
                            {
                                "name" : "aaaa",
                                "child" : []
                            }
                        ]
                    },
                    {
                        "name" : "aab",
                        "child" : []
                    }
                ]

            },
            {
                "name" : "ab",
                "child" : [
                    {
                        "name": "aba",
                        "child" : []
                    }
                ]

            }
        ]
    },
    {
        "name": "b",
        "child" : [
            {
                "name" : "bb",
                "child" : [
                    {
                        "name" : "bbb",
                        "child" : []
                    }
                ]
            }
        ]
    }

]
阅读 1.2k
1 个回答
function listToTree (srcList) {
  let destList = []
  srcList.forEach(pathList => {
    let levelList = destList
    for (let name of pathList) {
      let obj = levelList.find(item => item.name == name)
      if (!obj) {
        obj = { name, child: [] }
        levelList.push(obj)
      }
      levelList = obj.child
    }
  })
  return destList
}


let list = [
    ["a", "aa", "aaa", "aaaa"],
    ["b", "bb", "bbb"],
    ["a", "ab", "aba"],
    ["a", "aa", "aab"]
]

let result = listToTree(list)
console.log(JSON.stringify(result, null, 2))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题