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

如何使用Interface从对象数组中提取指定属性

使用TypeScript Interface实现指定属性提取

1. 定义数据结构的Interface

先用Interface明确原始数据和目标数据的结构,确保类型安全:

// 学校子结构(原始和目标结构一致,可复用)
interface School {
  name: string;
}

// 原始学生数据的完整结构
interface OriginalStudent {
  id: number;
  name: string;
  age: number;
  skl: School;
}

// 提取后需要的学生数据结构
interface ExtractedStudent {
  id: number;
  name: string;
  skl: School;
}

2. 编写转换逻辑

利用数组的map方法遍历原始数组,只保留需要的属性:

// 示例原始数据
const originalStudents: OriginalStudent[] = [
  { "id": 1, "name":"name1", age: 11,   "skl": {"name": "KK school"} },
  { "id": 2, "name":"name2", age: 12, "skl": {"name": "KK school"} },
  { "id": 3, "name":"name3", age: 13, "skl": {"name": "KK school"} },
  { "id": 4, "name":"name4", age: 14, "skl": {"name": "KK school"} }
];

// 转换函数:从原始数组提取指定属性
const extractTargetProperties = (students: OriginalStudent[]): ExtractedStudent[] => {
  return students.map(student => ({
    id: student.id,
    name: student.name,
    // 若原始skl只有name属性,直接复用即可;若有多余属性,需显式构造{ name: student.skl.name }
    skl: student.skl
  }));
};

// 执行转换
const result = extractTargetProperties(originalStudents);
console.log(result);

关键说明

  • Interface的核心作用是类型约束,在编译阶段就能检查输入输出的数据结构是否符合预期,避免因属性名拼写错误、类型不匹配导致的运行时问题。
  • 如果原始的skl对象包含多余属性,而你只需要保留name,则需要修改转换逻辑为skl: { name: student.skl.name },确保只保留目标属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:09:24