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

如何递归转换JavaScript对象及嵌套对象,移除edges和nodes

递归移除嵌套JavaScript对象中的edges和nodes结构

针对嵌套对象的结构转换需求,我们可以写一个递归函数处理所有层级的edges/nodes结构,直接将其转换为实际数据的数组,替代原嵌套格式。

递归实现函数

function removeEdgesAndNodesRecursive(item) {
  // 处理数组:遍历每个元素递归转换
  if (Array.isArray(item)) {
    return item.map(removeEdgesAndNodesRecursive);
  }

  // 处理对象:先判断是否是edges结构
  if (typeof item === 'object' && item !== null) {
    // 如果当前对象包含edges,提取node数组并递归处理每个node
    if ('edges' in item) {
      return item.edges.map(edge => removeEdgesAndNodesRecursive(edge?.node));
    }

    // 普通对象:遍历所有属性,递归处理属性值
    const result = {};
    for (const key in item) {
      if (Object.prototype.hasOwnProperty.call(item, key)) {
        result[key] = removeEdgesAndNodesRecursive(item[key]);
      }
    }
    return result;
  }

  // 基本类型直接返回
  return item;
}

使用示例

针对你给出的深层嵌套数据:

const data = {
  products: {
    edges: [
      {
        node: {
          title: 'x',
          collections: {
            edges: [
              {
                node: {
                  title: 'x - collection',
                  products: {
                    edges: [
                      {
                        node: {
                          title: 'product in x collection'
                        }
                      }
                    ]
                  }
                }
              }
            ]
          }
        }
      }
    ]
  }
};

// 调用函数处理
const transformedData = removeEdgesAndNodesRecursive(data.products);
console.log(transformedData);

输出结果

[
  {
    title: 'x',
    collections: [
      {
        title: 'x - collection',
        products: [
          { title: 'product in x collection' }
        ]
      }
    ]
  }
]

函数逻辑说明

  • 数组处理:对数组中的每一项递归转换,保证嵌套数组也能被处理
  • edges结构判断:只要对象包含edges属性,就自动提取其中的node组成数组,再递归处理每个node内部的结构
  • 普通对象处理:遍历对象的所有自有属性,对每个属性值递归转换,保留原有的键名和非列表结构
  • 基本类型(字符串、数字等)直接返回,不做修改

这个函数可以处理任意深度的嵌套结构,完全适配你描述的固定数据模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:55:25