1、数据源
let datas = [
{
id: 1,
nulls: "null",
},
{
id: 2,
children: [
{
id: 4,
},
{
id: 5,
nulls: "null",
},
{
id: 6,
children: [
{
id: 7,
nulls: "null",
},
{
id: 8,
},
{
id: 9,
children: [
{
id: 11,
nulls: "null",
},
{
id: 12,
children: [
{
id: 17,
nulls: "null",
},
{
id: 18,
},
],
},
{
id: 13,
children: [
{
id: 15,
nulls: "null",
},
{
id: 16,
},
],
},
{
id: 14,
},
],
},
{
id: 10,
},
],
},
],
},
{
id: 3,
},
];
2、递归
function recursion(data) {
data.forEach((item, i) => {
if (item.nulls) {
console.log(item.nulls, i);
// -------------------在递归中无法使用这两个API-------------------
// data.splice(i, 1);
// this.$delete(data, i); // 这是vue中的delete方法
// delete item;
// -------------------在递归中无法使用这两个API-------------------
// 解决
// 通过自定义属性设置元素的显示与隐藏
item.isShow = true;
}
if (item.children) recursion(item.children);
});
}
recursion(data);