对树节点进行定义
找到某一个固定的key,添加一个兄弟节点
const treeData = [
{
title: 'parent 1',
key: '0-0',
children: [
{
title: 'parent 1-0',
key: '0-0-0',
disabled: true,
children: [
{
title: 'leaf',
key: '0-0-0-0',
disableCheckbox: true,
},
{
title: 'leaf',
key: '0-0-0-1',
children: [
{
title: 'hhh',
key: '0-0-0-1-0',
disableCheckbox: false,
}
]
},
],
},
{
title: 'parent 1-1',
key: '0-0-1',
children: [{ title: 'abc', key: '0-0-1-0' }],
},
],
},
];
找到某一个固定的key,添加兄弟节点
const addNode = (treeData, nodeKey) => {
console.count();
for (let i = 0; i < treeData.length; i++) {
if (treeData[i].key === nodeKey) {
treeData.push({ //treeData[i]的父节点就是treeData
title: '新增的节点',
key: Math.random() + '',
})
break;
}
if (treeData[i].children && treeData[i].children.length > 0) {
addNode(treeData[i].children, nodeKey);
}
}
return treeData;
};
console.log(addNode(treeData, nodeKey));
找到某一个节点,并删除它。如果children是空数组,删掉children属性
const deleteNode = (treeData, nodeKey) => {
for (let i = 0; i < treeData.length; i++) {
if (treeData[i].key === nodeKey) {
treeData.splice(i, 1); //会修改原数组
break;
}
const children = treeData[i].children;
if (children) {
if(children.length === 0){
Reflect.deleteProperty(children, 'children');
}else{
deleteNode(children, nodeKey);
}
}
}
return treeData;
}
console.log(deleteNode(treeData, nodeKey))