数据结构和递归函数
// 数据结构
const arr = [
{
name: "测试1",
parentId: 0,
cityId: 1,
children: [
{
name: "测试2",
parentId: 1,
cityId: 2,
children: [
{ name: "测试7", parentId: 2, cityId: 7 },
{ name: "测试8", parentId: 2, cityId: 8 },
],
},
{ name: "测试3", parentId: 1, cityId: 3 },
],
}
];
// 递归函数来设置 parentName
function setParentNames(nodes, parentName = null) {
nodes.forEach(node => {
// 设置当前节点的 parentName
node.parentName = parentName;
if (node.children && node.children.length > 0) {
// 递归处理子节点,并传递当前节点的 name 作为 parentName
setParentNames(node.children, node.name);
}
});
}
调用方法
若只有一个顶级节点
// 调用函数,从顶级节点的 children 开始
if (arr.length > 0 && arr[0].children) {
setParentNames(arr[0].children);
}
console.log(arr);
若有多个顶级节点
// 假设 arr 包含多个顶级对象
arr.forEach(topLevelNode => {
if (topLevelNode.children) {
// 将顶级节点的 name 作为子节点的 parentName 的根
setParentNames(topLevelNode.children, topLevelNode.name);
}
});