You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JavaScript数组转换为嵌套子对象结构?

实现JavaScript单层数组到层级嵌套结构的转换

需求描述

给定以下JavaScript单层数组:

const array = [
  { number: 1, name: 'one', child: [] },
  { number: 2, name: 'two', child: [] },
  { number: 3, name: 'three', child: [] }
];

需要将其转换为如下层级嵌套的结构:

const nested = [
  {
    number: 1,
    name: 'one',
    child: [
      {
        number: 2,
        name: 'two',
        child: [
          {
            number: 3,
            name: 'three',
            child: []
          }
        ]
      }
    ]
  }
];

实现方法

可以通过倒序遍历数组的方式构建嵌套结构,从最后一个元素开始,依次将当前元素嵌套进前一个元素的child数组中,最终返回仅包含第一个元素的数组。

代码实现

function convertToNested(arr) {
  // 复制原数组,避免修改原始数据
  const copy = [...arr];
  // 从倒数第二个元素开始向前遍历
  for (let i = copy.length - 2; i >= 0; i--) {
    // 将后一个元素放入当前元素的child数组
    copy[i].child.push(copy[i + 1]);
  }
  // 返回嵌套完成的结构
  return [copy[0]];
}

// 测试示例
const array = [
  { number: 1, name: 'one', child: [] },
  { number: 2, name: 'two', child: [] },
  { number: 3, name: 'three', child: [] }
];

const nested = convertToNested(array);
console.log(nested);

思路说明

  • 先复制原数组,防止操作过程中破坏原始数据;
  • 倒序遍历从倒数第二个元素启动,因为最后一个元素不需要嵌套子元素;
  • 每一步将当前元素的下一个元素推入它的child数组,逐步搭建层级关系;
  • 最终返回只包含第一个元素的数组,此时第一个元素已经包含所有后续嵌套的子元素。

这个方法适用于任意长度的顺序数组,只要数组元素的顺序符合嵌套层级的先后关系即可。

内容的提问来源于stack exchange,提问作者Omid Khodarahmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:27:16