可以使用递归来实现树形结构的循环,并在每个对象中增加'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'属性表示层级关系。

ES6 递归遍历树形结构并添加路径层级关系

原文地址: https://www.cveoy.top/t/topic/oPfN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录