es6 树形结构递归 循环每个对象 并增加path为 层级关系 入 0011 并返回新数组
可以使用递归来实现树形结构的循环,并在每个对象中增加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属性表示层级关系
原文地址: http://www.cveoy.top/t/topic/hmsl 著作权归作者所有。请勿转载和采集!