多个数组转一个三维json

QQ图片20191104140417.png

转化成 =>

QQ图片20191104140444.png

请问各位大佬,拿到上图的数据,如何通过js代码转化成下图的 三维json的格式!!

阅读 1.6k
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, sub: [] }
        levelList.push(obj)
      }
      levelList = obj.sub
    }
  })
  return destList
}

测试:

list = [
  ['广东', '广州', '荔湾'],
  ['广东', '广州', '番禺'],
  ['广东', '珠海'],
]

console.log(JSON.stringify(listToTree(list)))

输出

[
    {
        "name":"广东",
        "sub":[
            {
                "name":"广州",
                "sub":[
                    {
                        "name":"荔湾",
                        "sub":[

                        ]
                    },
                    {
                        "name":"番禺",
                        "sub":[

                        ]
                    }
                ]
            },
            {
                "name":"珠海",
                "sub":[

                ]
            }
        ]
    }
]
推荐问题