在项目中有个需求,就是获取到的设备数据,有设备类型、设备名和设备id,需要树形结构数据,设备类型在一级节点,设备在二级节点,设备类型有可能重复的,那么就需要去重,那怎么做到最后是树形数据呢
1、第一步,先遍历设备数据,将全部设备类型加载到树形数据treeData
里,如下所示:
{
"label":"devtypexxxxx",
"children":[]
}
然后去重,为了使用new Set()
方式去重,在添加到treeData时,可以使用JSON.stringify()
,代码如下所示:
devices.forEach(item => {
this.treeData.push(
JSON.stringify({
label: item.devtype,
devtype: item.devtype,
children: []
})
)
})
然后将这个treeData去重,代码如下所示:
var array = Array.from(new Set(this.treeData))
var devtypeList = []
array.forEach(item => {
devtypeList.push(JSON.parse(item))
})
devtypeList就是去重后的数组,那么判断设备如果是该设备类型的,就添加到children
里,代码如下所示:
devtypeList.forEach(item => {
devices.forEach(dev => {
if (item.devtype === dev.devtype) {
item.children.push({
label: dev.devname,
devtype: dev.devtype,
devid: dev.devid
})
}
})
})
devtypeList
就是最后的树形数据。
网友评论