例:
<script>
// 将下列数据转换为嵌套数据
let arr = [
{ name: '小明', age: 18, id: 1, pid: '' },
{ id: 2, hoby: '篮球', pid: 1 }
]
// 将数据转换为如下形式
let arr1 = [
{
name: '小明',
age: 18,
id: 1,
pid: '',
children: {
id: 2,
hoby: '篮球',
pid: 1
}
}
]
</script>
使用递归函数实现 (无论数据嵌套多少层都可以筛选出来)
<script>
// 定义一个函数
// 两个参数
// arr 并列数据的数组
// pid 子夫级数据的关联属性
function Turndata(arr, pid) {
// 定义一个空数组容器
let newarr = []
arr.forEach(item => {
// 通过观察,子级数据的pid等于夫级数据的id
if (item.pid === pid) {
// 利用递归函数拿到子级数据
let children = Turndata(arr, item.id)
if (children.length > 0) {
item.children = children
}
// 把结果返回
newarr.push(item)
}
})
return newarr
}
// 调用函数,传参数
let a = Turndata(arr, '')
console.log(a)
完成数据转换
</script>