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

如何在TypeScript中轻松格式化指定嵌套对象数组?

TypeScript 实现嵌套对象数组的结构转换

需求说明

需要将包含嵌套子分类的对象数组转换为指定结构:将原对象的segment字段重命名为link,移除id字段,并递归处理subCategory中的嵌套对象。

原数组结构

let arr = [{
  id: 1,
  name: 'Test',
  segment: 'test',
  subCategory: [{
    id: 1,
    name:'Test1',
    segment:'test1'
  }]
}]

目标数组结构

let newArr = [{
  link: 'test', 
  name: 'Test',
  subCategory: [{
    link: 'test1',
    name: 'Test1'
  }]
}]

实现方案

带类型校验的严谨实现

利用TypeScript类型定义保证类型安全,通过递归函数处理嵌套结构:

// 定义原数据类型
interface OriginalCategory {
  id: number;
  name: string;
  segment: string;
  subCategory?: OriginalCategory[];
}

// 定义转换后的数据类型
interface TransformedCategory {
  link: string;
  name: string;
  subCategory?: TransformedCategory[];
}

// 单个对象转换函数,递归处理子分类
const transformCategory = (item: OriginalCategory): TransformedCategory => {
  const { segment: link, name, subCategory } = item;
  return {
    link,
    name,
    ...(subCategory && { subCategory: subCategory.map(transformCategory) })
  };
};

// 转换整个数组
const newArr = arr.map(transformCategory);

极简版实现(无类型定义)

如果不需要严格的类型校验,可简化为以下代码:

const transformItem = (item: any) => ({
  link: item.segment,
  name: item.name,
  ...(item.subCategory && { subCategory: item.subCategory.map(transformItem) })
});

const newArr = arr.map(transformItem);

说明

  • 递归函数会自动处理任意层级的subCategory嵌套,无需额外修改代码。
  • 利用对象解构和扩展运算符简化字段映射逻辑,代码简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:28:22