将data1的数据结构转化成data2的数据结构:
const data1 = [
{
"group_id": "1",
"group_name": "广州",
"p_group_id": "-1",
"group_level": 1,
},
{
"group_id": "11",
"group_name": "番禺",
"p_group_id": "1",
"group_level": 2,
},
{
"group_id": "12",
"group_name": "荔湾",
"p_group_id": "1",
"group_level": 2,
},
{
"group_id": "111",
"group_name": "市桥",
"p_group_id": "11",
"group_level": 3,
},
{
"group_id": "1111",
"group_name": "银座",
"p_group_id": "111",
"group_level": 4,
},
{
"group_id": "2",
"group_name": "杭州",
"p_group_id": "-1",
"group_level": 1,
},
{
"group_id": "21",
"group_name": "余杭",
"p_group_id": "2",
"group_level": 2,
},
{
"group_id": "211",
"group_name": "海创园",
"p_group_id": "21",    
"group_level": 3,
},
{
"group_id": "212",
"group_name": "海创园二期",
"p_group_id": "21",
"group_level": 3,
},
{
"group_id": "213",
"group_name": "海创园三期",
"p_group_id": "21",
"group_level": 3,
},
{
"group_id": "2131",
"group_name": "三期A栋",
"p_group_id": "213",
"group_level": 4,
}
];
 
const data2 = [
        {
                value : "1",
                label : "广州",
                children : [
                        {
                                value : "11",
                                label : "番禺",
                                children : [
                                        {
                                                value : "111",
                                                label : "市桥“
                                                children : [
                                                {
                                                        value : "1111",
                                                        label : "银座"
                                                }
                                                ]
                                        }
                                ]
                        }
                ]
        }
]
 
代码如下:
getGroupData = (groupList) => {
let data = []
groupList.map((item, index) => {
let obj = {}
obj.value = item.group_id
obj.label = item.group_name
let childList = []
this.state.deviceGroupList.map((item2, index) => {
if (item2.p_group_id === item.group_id) {
        childList.push(item2)
}
})
if (childList.length > 0) {
        obj.children = this.getGroupData(childList)
}
data.push(obj)
//若是顶级分组数据,则直接push到groupOptions数组里
if (item.p_group_id == -1) {
        this.state.groupOptions.push(obj)
}
})
return data
}