以下是一个使用递归的transTreeData函数的示例:

function transTreeData(data) {
  const map = {}; // 用于存储每个元素的id和对应的对象
  const result = []; // 存储最终结果
  
  // 遍历data,将每个元素以id为键存储到map中
  for (let i = 0; i < data.length; i++) {
    const item = data[i];
    map[item.id] = item;
  }
  
  // 遍历data,将每个元素根据parentId放入对应的children数组中
  for (let i = 0; i < data.length; i++) {
    const item = data[i];
    const parent = map[item.parentId];
    if (parent) {
      if (!parent.children) {
        parent.children = [];
      }
      parent.children.push(item);
    } else {
      // 如果没有父元素,则将其作为根元素添加到result中
      result.push(item);
    }
  }
  
  return result;
}

使用示例:

const data = [
  { id: 1, parentId: null },
  { id: 2, parentId: 1 },
  { id: 3, parentId: 1 },
  { id: 4, parentId: 2 },
  { id: 5, parentId: 3 },
  { id: 6, parentId: 3 },
];

const result = transTreeData(data);
console.log(result);

输出结果:

[
  {
    id: 1,
    parentId: null,
    children: [
      {
        id: 2,
        parentId: 1,
        children: [
          { id: 4, parentId: 2 },
        ],
      },
      {
        id: 3,
        parentId: 1,
        children: [
          { id: 5, parentId: 3 },
          { id: 6, parentId: 3 },
        ],
      },
    ],
  },
]
``
js写一个transTreeDatadata函数 对data进行处理 data为包含多个元素为对象的数组如果某个元素的parentId不为空 会将其加入到id值为该parentId值的元素的children属性数组中 层级不止一层 可能要递归调用 给出最优解

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

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