如何在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
相关产品推荐
相关产品推荐

