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

如何在TypeScript中从对象数组生成表头数组?

解决从对象数组提取首个对象属性名作为表头的问题

嘿,我来帮你搞定这个问题!你现在用Array.from(this.scores.keys())得到的是数组的索引(0、1、2),这是因为keys()方法返回的是数组自身的键——也就是元素的位置序号,而不是数组里对象的属性名。

要拿到你想要的表头数组,其实很简单,只需要两步:

  • 确保数组不为空,然后取出第一个对象
  • 用Object.keys()方法提取这个对象的所有可枚举属性名

完整代码示例

let scores = [{name: "A", skills: 50, result: 80}, {name: "B", skills: 40, result: 90}, {name: "C", skills: 60, result: 60}];
let parameters: string[] = [];

// 先判断数组是否有元素,避免空数组导致的报错
if (scores.length > 0) {
  // 取出第一个对象,获取它的所有属性名
  parameters = Object.keys(scores[0]);
}

console.log(parameters); // 输出: ["name", "skills", "result"]

额外说明

  • 如果你的数组可能为空,一定要加上判断逻辑,不然当scores[0]是undefined时,调用Object.keys()会抛出错误。
  • 如果你更倾向于ES6+的写法,也可以用scores.at(0)来获取第一个元素,它在空数组时会返回undefined,同样需要配合判断:
    const firstItem = scores.at(0);
    if (firstItem) {
      parameters = Object.keys(firstItem);
    }
    
  • 如果你需要包括对象的不可枚举属性,可以用Object.getOwnPropertyNames();如果还要包括Symbol类型的属性,就用Reflect.ownKeys(),不过一般表头场景下Object.keys()完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:09:35