数组相同项合并

新手上路,请多包涵

如何 把[

        '华南地区/湖南省/长沙市/天心区',
        '华南地区/湖南省/长沙市/岳麓区',
        '华南地区/湖南省/株洲市/荷塘区',
        '华南地区/湖南省/株洲市/芦淞区',
        '华南地区/广东省/广州市/天河区',
        '华南地区/广东省/广州市/白云区',
        '华南地区/广东省/深圳市/罗湖区',
        '华南地区/广东省/深圳市/龙华区',
        '华北地区/河北省/石家庄市/长安区',
        '华北地区/河北省/石家庄市/新华区',
        '华北地区/河北省/保定区/竞秀区',
        '华北地区/河北省/保定区/莲池区',
        '华北地区/山东省/济南市/历下区',
        '华北地区/山东省/济南市/章丘区',
        '华北地区/山东省/青岛市/黄岛区',
        '华北地区/山东省/青岛市/崂山区']
        

这种数据,转成下面的格式?
image.png

阅读 1.9k
1 个回答
function transData(data){
    let obj = {}
    data.forEach(item => {
        let list = item.split('/')
        list.reduce((parent, citem) => {
            return (parent[citem] = parent[citem] || {})
        }, obj)
    })
    return loop(obj)
}
function loop(obj){
    return Object.keys(obj).map(key => {
        let cc = loop(obj[key])
        return {
            label: key,
            children: cc.length ? cc : undefined
        }
    })
}

image.png

具体要什么样的数据格式,自己在处理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题