首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将对象的平面数组(可能有多个父对象)转换为对象的嵌套数组

将对象的平面数组转换为对象的嵌套数组可以通过以下步骤实现:

  1. 首先,创建一个空的对象,用于存储最终的嵌套数组。
  2. 遍历平面数组中的每个对象。
  3. 对于每个对象,获取其父对象的ID(如果有)。
  4. 如果父对象的ID存在,则将当前对象添加到父对象的子对象数组中。
  5. 如果父对象的ID不存在,则将当前对象作为顶级对象添加到最终的嵌套数组中。
  6. 重复步骤2-5,直到遍历完所有的对象。
  7. 返回最终的嵌套数组。

这样,平面数组中的对象就会根据其父对象的ID被正确地嵌套到对应的子对象数组中。

以下是一个示例代码(使用JavaScript):

代码语言:txt
复制
function convertToNestedArray(flatArray) {
  const nestedArray = [];
  const idToObjMap = {};

  // 创建对象的ID到对象的映射
  flatArray.forEach(obj => {
    idToObjMap[obj.id] = obj;
  });

  // 遍历平面数组中的每个对象
  flatArray.forEach(obj => {
    const parentId = obj.parentId;

    // 如果父对象的ID存在,则将当前对象添加到父对象的子对象数组中
    if (parentId) {
      const parentObj = idToObjMap[parentId];
      if (parentObj) {
        if (!parentObj.children) {
          parentObj.children = [];
        }
        parentObj.children.push(obj);
      }
    } else {
      // 如果父对象的ID不存在,则将当前对象作为顶级对象添加到最终的嵌套数组中
      nestedArray.push(obj);
    }
  });

  return nestedArray;
}

// 示例用法
const flatArray = [
  { id: 1, name: 'Object 1', parentId: null },
  { id: 2, name: 'Object 2', parentId: 1 },
  { id: 3, name: 'Object 3', parentId: 1 },
  { id: 4, name: 'Object 4', parentId: 2 },
  { id: 5, name: 'Object 5', parentId: 3 },
];

const nestedArray = convertToNestedArray(flatArray);
console.log(nestedArray);

这个示例代码将会输出以下结果:

代码语言:txt
复制
[
  {
    id: 1,
    name: 'Object 1',
    parentId: null,
    children: [
      {
        id: 2,
        name: 'Object 2',
        parentId: 1,
        children: [
          {
            id: 4,
            name: 'Object 4',
            parentId: 2,
            children: []
          }
        ]
      },
      {
        id: 3,
        name: 'Object 3',
        parentId: 1,
        children: [
          {
            id: 5,
            name: 'Object 5',
            parentId: 3,
            children: []
          }
        ]
      }
    ]
  }
]

这样,平面数组中的对象就被正确地转换为了嵌套数组的形式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

12分41秒

day09_面向对象(上)/07-尚硅谷-Java语言基础-对象数组的内存解析

12分41秒

day09_面向对象(上)/07-尚硅谷-Java语言基础-对象数组的内存解析

12分41秒

day09_面向对象(上)/07-尚硅谷-Java语言基础-对象数组的内存解析

9分24秒

day08_面向对象(上)/22-尚硅谷-Java语言基础-课后练习4:对象数组的改进

9分24秒

day08_面向对象(上)/22-尚硅谷-Java语言基础-课后练习4:对象数组的改进

9分24秒

day08_面向对象(上)/22-尚硅谷-Java语言基础-课后练习4:对象数组的改进

19分31秒

day09_面向对象(上)/09-尚硅谷-Java语言基础-自定义数组的工具类

19分31秒

day09_面向对象(上)/09-尚硅谷-Java语言基础-自定义数组的工具类

19分31秒

day09_面向对象(上)/09-尚硅谷-Java语言基础-自定义数组的工具类

37分30秒

1.尚硅谷全套JAVA教程--基础必备(67.32GB)/尚硅谷Java入门教程,java电子书+Java面试真题(2023新版)/08_授课视频/79-面向对象(基础)-对象数组的使用及内存解析.mp4

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券