请教一个js数据格式装换问题

新手上路,请多包涵

有没有比较好的方法吧图一的数据装换成图二的样子,规则是同名的key和value合并,组装成父子级的关系,而且leve可能有很多层可以嵌套很多层,请问下有比较好的方法吗?

图一图二

阅读 1.1k
1 个回答

需要线确定树的层级机构,用levels表示,可以像下面这样处理,具体想要的数据结构看你需求再修改下

let levels = ['level1', 'level2', 'level3']
function arayToTree(arr, index){
    index = index || 0
    let result = [], obj = {}, props = levels[index]
    if(!props || index == levels.length - 1){
        return arr
    }
    arr.forEach(item => {
        if(obj[item[props]]){
            obj[item[props]].push(item)
        }else{
            obj[item[props]] = [item]
        }
    })
    
    for(let k in obj){
        result.push({
            name: k,
            child: arayToTree(obj[k], index + 1)
        })
    }
    
    return result
}

let arr = [
    {
        level1: 'a1',
        level2: 'b1',
        level3: 'c1',
        title: 'tt'
    },{
        level1: 'a1',
        level2: 'b1',
        level3: 'c2',
        title: 'tt'
    },{
        level1: 'a2',
        level2: 'b1',
        level3: 'c1',
        title: 'tt'
    },{
        level1: 'a2',
        level2: 'b2',
        level3: 'c1',
        title: 'tt'
    }
]

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