ES6 递归遍历树形结构并添加路径层级关系
可以使用递归来实现树形结构的循环,并在每个对象中增加'path'属性表示层级关系。
以下是一个示例代码:
const data = [
{
title: 'A',
children: [
{
title: 'B',
children: [
{
title: 'C'
},
{
title: 'D'
}
]
},
{
title: 'E'
}
]
},
{
title: 'F',
children: [
{
title: 'G'
}
]
}
];
function addPath(data, path = '') {
return data.map((item, index) => {
const newPath = path ? `${path}.${index}` : `${index}`;
const newItem = { ...item, path: newPath };
if (newItem.children) {
newItem.children = addPath(newItem.children, newPath);
}
return newItem;
});
}
const newData = addPath(data);
console.log(newData);
在上面的代码中,addPath函数接收一个数组和一个path参数(默认为空字符串)。在函数中,我们使用map方法循环遍历数组中的每个对象,并为每个对象增加一个新的'path'属性,用以表示对象在树形结构中的层级关系。
如果当前对象中还有'children'属性,则继续递归调用addPath函数,传入新的path参数,将新的path字符串作为子对象的'path'属性值。
最后,我们将处理后的新数组返回。在主程序中调用addPath函数即可得到新数组,其中每个对象都有了'path'属性表示层级关系。
原文地址: https://www.cveoy.top/t/topic/oPfN 著作权归作者所有。请勿转载和采集!