数据处理
处理前:
//未处理前数据:
const data=[
{
"id": 52,
"typeName": "仅用于测试",
"dataStandarList": [
{
"id": 317,
"standarName": "仅用于测试标准2",
"typeName": null
},
{
"id": 318,
"standarName": "仅用于测试标准2",
"typeName": null
}
],
"children": [
{
"id": 54,
"typeName": "仅用于测试子节点1",
"dataStandarList": [],
"children": []
},
{
"id": 68,
"typeName": "仅测试111",
"dataStandarList": [],
"children": []
}
]
},
{
"id": 53,
"typeName": "仅用于测试5",
"dataStandarList": [],
"children": [
{
"id": 64,
"typeName": "仅用于测试test1",
"dataStandarList": [],
"children": []
},
{
"id": 65,
"typeName": "仅用于测试test1444",
"dataStandarList": [],
"children": []
}
]
},
{
"id": 63,
"typeName": "仅用于测试5333",
"dataStandarList": [
{
"id": 345,
"standarName": "仅测试a116667779990004444488888888888",
"typeName": null
},
{
"id": 351,
"standarName": "仅测试01",
"typeName": null
},
{
"id": 359,
"standarName": "仅测试03222",
"typeName": null
},
{
"id": 365,
"standarName": "aaaaaaaaaaa",
"typeName": null
}
],
"children": []
},
{
"id": 66,
"typeName": "仅测试111修改根目录名称",
"dataStandarList": [
{
"id": 366,
"standarName": "aaaaaaaaaaaa111",
"typeName": null
}
],
"children": [
{
"id": 67,
"typeName": "aaaaaaaaaaa",
"dataStandarList": [
{
"id": 387,
"standarName": "dasdasdasdzxc",
"typeName": null
},
{
"id": 390,
"standarName": "ygqtest003",
"typeName": null
}
],
"children": []
}
]
},
{
"id": 69,
"typeName": "仅测试a",
"dataStandarList": [],
"children": []
}
]
处理后:
const data=[
{
"id": 52,
"typeName": "仅用于测试",
"dataStandarList": [],
"children": [
{
"id": 54,
"typeName": "仅用于测试子节点1",
"dataStandarList": [],
"children": []
},
{
"id": 68,
"typeName": "仅测试111",
"dataStandarList": [],
"children": []
},
{
"id": 317,
"standarName": "仅用于测试标准2",
"typeName": null,
"label": "仅用于测试标准2",
"icontype": "standar"
},
{
"id": 318,
"standarName": "仅用于测试标准2",
"typeName": null,
"label": "仅用于测试标准2",
"icontype": "standar"
}
]
},
{
"id": 53,
"typeName": "仅用于测试5",
"dataStandarList": [],
"children": [
{
"id": 64,
"typeName": "仅用于测试test1",
"dataStandarList": [],
"children": []
},
{
"id": 65,
"typeName": "仅用于测试test1444",
"dataStandarList": [],
"children": []
}
]
},
{
"id": 63,
"typeName": "仅用于测试5333",
"dataStandarList": [],
"children": [
{
"id": 345,
"standarName": "仅测试a116667779990004444488888888888",
"typeName": null,
"label": "仅测试a116667779990004444488888888888",
"icontype": "standar"
},
{
"id": 351,
"standarName": "仅测试01",
"typeName": null,
"label": "仅测试01",
"icontype": "standar"
},
{
"id": 359,
"standarName": "仅测试03222",
"typeName": null,
"label": "仅测试03222",
"icontype": "standar"
},
{
"id": 365,
"standarName": "aaaaaaaaaaa",
"typeName": null,
"label": "aaaaaaaaaaa",
"icontype": "standar"
}
]
},
{
"id": 66,
"typeName": "仅测试111修改根目录名称",
"dataStandarList": [],
"children": [
{
"id": 67,
"typeName": "aaaaaaaaaaa",
"dataStandarList": [],
"children": [
{
"id": 390,
"standarName": "ygqtest003",
"typeName": null,
"label": "ygqtest003",
"icontype": "standar"
}
]
},
{
"id": 366,
"standarName": "aaaaaaaaaaaa111",
"typeName": null,
"label": "aaaaaaaaaaaa111",
"icontype": "standar"
}
]
},
{
"id": 69,
"typeName": "仅测试a",
"dataStandarList": [],
"children": []
}
]
处理函数:
//组合datastandar到children 处理菜单目录解构
function addDataStandardsToList (dataList) {
// 遍历所有元素
for (let i = 0; i < dataList.length; i++) {
const element = dataList[i]
// 检查是否有非空的dataStandarList数组
if (element.dataStandarList && element.dataStandarList.length > 0) {
// 遍历dataStandarList数组并将标准添加到同一对象的children数组内
for (let j = 0; j < element.dataStandarList.length; j++) {
element.dataStandarList[j].label = element.dataStandarList[j].standarName
element.dataStandarList[j].icontype = 'standar'
const standard = element.dataStandarList[j]
element.children.push(standard)
}
// 清空dataStandarList数组
element.dataStandarList = []
}
// 递归调用函数处理子元素
if (element.children && element.children.length > 0) {
addDataStandardsToList(element.children)
}
}
// 返回处理后的数据列表
return dataList
}
数据处理
处理前:
[
{
"id": 52,
"typeName": "仅用于测试",
"dataStandarList": [],
"children": [
{
"id": 54,
"typeName": "仅用于测试子节点1",
"dataStandarList": [],
"children": []
},
{
"id": 68,
"typeName": "仅测试111",
"dataStandarList": [],
"children": []
},
{
"id": 317,
"standarName": "仅用于测试标准2",
"typeName": null,
"label": "仅用于测试标准2",
"icontype": "standar"
},
{
"id": 318,
"standarName": "仅用于测试标准2",
"typeName": null,
"label": "仅用于测试标准2",
"icontype": "standar"
}
]
},
{
"id": 53,
"typeName": "仅用于测试5",
"dataStandarList": [],
"children": [
{
"id": 64,
"typeName": "仅用于测试test1",
"dataStandarList": [],
"children": []
},
{
"id": 65,
"typeName": "仅用于测试test1444",
"dataStandarList": [],
"children": []
}
]
},
{
"id": 63,
"typeName": "仅用于测试5333",
"dataStandarList": [],
"children": [
{
"id": 345,
"standarName": "仅测试a116667779990004444488888888888",
"typeName": null,
"label": "仅测试a116667779990004444488888888888",
"icontype": "standar"
},
{
"id": 351,
"standarName": "仅测试01",
"typeName": null,
"label": "仅测试01",
"icontype": "standar"
},
{
"id": 359,
"standarName": "仅测试03222",
"typeName": null,
"label": "仅测试03222",
"icontype": "standar"
},
{
"id": 365,
"standarName": "aaaaaaaaaaa",
"typeName": null,
"label": "aaaaaaaaaaa",
"icontype": "standar"
}
]
},
{
"id": 66,
"typeName": "仅测试111修改根目录名称",
"dataStandarList": [],
"children": [
{
"id": 67,
"typeName": "aaaaaaaaaaa",
"dataStandarList": [],
"children": [
{
"id": 390,
"standarName": "ygqtest003",
"typeName": null,
"label": "ygqtest003",
"icontype": "standar"
}
]
},
{
"id": 366,
"standarName": "aaaaaaaaaaaa111",
"typeName": null,
"label": "aaaaaaaaaaaa111",
"icontype": "standar"
}
]
},
{
"id": 69,
"typeName": "仅测试a",
"dataStandarList": [],
"children": []
}
]
处理后:
[
{
"id": 52,
"typeName": "仅用于测试",
"dataStandarList": [],
"children": [
{
"id": 54,
"typeName": "仅用于测试子节点1",
"dataStandarList": [],
"children": [],
"value": "54-仅用于测试子节点1",
"label": "仅用于测试子节点1"
},
{
"id": 68,
"typeName": "仅测试111",
"dataStandarList": [],
"children": [],
"value": "68-仅测试111",
"label": "仅测试111"
},
{
"id": 317,
"standarName": "仅用于测试标准2",
"typeName": null,
"label": "仅用于测试标准2",
"icontype": "standar",
"value": "317-null"
},
{
"id": 318,
"standarName": "仅用于测试标准2",
"typeName": null,
"label": "仅用于测试标准2",
"icontype": "standar",
"value": "318-null"
}
],
"value": "52-仅用于测试",
"label": "仅用于测试"
},
{
"id": 53,
"typeName": "仅用于测试5",
"dataStandarList": [],
"children": [
{
"id": 64,
"typeName": "仅用于测试test1",
"dataStandarList": [],
"children": [],
"value": "64-仅用于测试test1",
"label": "仅用于测试test1"
},
{
"id": 65,
"typeName": "仅用于测试test1444",
"dataStandarList": [],
"children": [],
"value": "65-仅用于测试test1444",
"label": "仅用于测试test1444"
}
],
"value": "53-仅用于测试5",
"label": "仅用于测试5"
},
{
"id": 63,
"typeName": "仅用于测试5333",
"dataStandarList": [],
"children": [
{
"id": 345,
"standarName": "仅测试a116667779990004444488888888888",
"typeName": null,
"label": "仅测试a116667779990004444488888888888",
"icontype": "standar",
"value": "345-null"
},
{
"id": 351,
"standarName": "仅测试01",
"typeName": null,
"label": "仅测试01",
"icontype": "standar",
"value": "351-null"
},
{
"id": 359,
"standarName": "仅测试03222",
"typeName": null,
"label": "仅测试03222",
"icontype": "standar",
"value": "359-null"
},
{
"id": 365,
"standarName": "aaaaaaaaaaa",
"typeName": null,
"label": "aaaaaaaaaaa",
"icontype": "standar",
"value": "365-null"
}
],
"value": "63-仅用于测试5333",
"label": "仅用于测试5333"
},
{
"id": 66,
"typeName": "仅测试111修改根目录名称",
"dataStandarList": [],
"children": [
{
"id": 67,
"typeName": "aaaaaaaaaaa",
"dataStandarList": [],
"children": [
{
"id": 390,
"standarName": "ygqtest003",
"typeName": null,
"label": "ygqtest003",
"icontype": "standar",
"value": "390-null"
}
],
"value": "67-aaaaaaaaaaa",
"label": "aaaaaaaaaaa"
},
{
"id": 366,
"standarName": "aaaaaaaaaaaa111",
"typeName": null,
"label": "aaaaaaaaaaaa111",
"icontype": "standar",
"value": "366-null"
}
],
"value": "66-仅测试111修改根目录名称",
"label": "仅测试111修改根目录名称"
},
{
"id": 69,
"typeName": "仅测试a",
"dataStandarList": [],
"children": [],
"value": "69-仅测试a",
"label": "仅测试a"
}
]
处理函数:
//获取菜单目录时给菜单添加label标签
function addLabel (dataList) {
dataList.forEach(data => {
if (Object.prototype.hasOwnProperty.call(data, 'typeName')) {
data.value = data.id + '-' + data.typeName
}
if (Object.prototype.hasOwnProperty.call(data, 'typeName') && !Object.prototype.hasOwnProperty.call(data, 'label')) {
data.label = data.typeName
}
if (Object.prototype.hasOwnProperty.call(data, 'children') &&
Array.isArray(data.children) &&
data.children.length > 0) {
addLabel(data.children)
}
})
return dataList
}