js算法题,树状数据倒推
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
// 基础数据
const categoryData = [
{
value: '1',
label: '职业教育',
children: [
{
value: '11',
label: 'IT/互联网',
children: [
{
value: '111',
label: '电商运营',
},
{
value: '112',
label: '产品经理',
},
],
},
],
},
]
// 目标数据
const res = [
{
id: 0,
value: ['1', '11', '112'],
label: ['职业教育', 'IT/互联网', '产品经理'],
},
{
id: 1,
value: ['1', '11', '111'],
label: ['职业教育', 'IT/互联网', '电商运营'],
},
]
// 已知数据
const myData = '111,112,111'
//倒推
const categoryAnalse = ({ categoryOptions, cateid3 }) => {
console.log(categoryOptions, cateid3)
const findWrap = (value, index) => {
const temp = {
id: index,
value: [],
label: [],
}
let tempClone
const find = (arr) => {
for (let i = 0; i < arr.length; i++) {
if (arr[i].children) {
temp.value.push(arr[i].value)
temp.label.push(arr[i].label)
find(arr[i].children)
} else {
if (arr[i].value === value) {
temp.value.push(value)
temp.label.push(arr[i].label)
tempClone = JSON.parse(JSON.stringify(temp))
}
}
}
temp.value.pop()
temp.label.pop()
}
find(categoryOptions)
return tempClone
}
const cateid3Arr = cateid3.split(',')
const result = cateid3Arr.map((item, index) => {
return findWrap(item, index)
})
console.log(result)
return result
}
categoryAnalse({categoryOptions: categoryData, cateid3: myData})
</script>
</body>
</html>