如何获取对象数组中第一个对象的属性名?
问题:提取数组首个对象的属性名
我有如下结构的对象数组,需要从中仅获取第一个对象的属性名(而非属性值),预期结果应为["Name", "Account", "Status"]。但我写的代码得到的结果包含索引0,不符合预期,求指导实现预期效果:
tempVar = [ { "Name" : "A1", "Account" : "Dom", "Status" : "A" }, { "Name" : "A5", "IntAccount" : "Int", "Status" : "A" }, { "Name" : "A2", "LclAccount" : "Lcl", "Status" : "A" }, { "Name" : "A4", "UnknownAccount" : "UA", "Status" : "A" } ]; let propNames: Array<any> = []; tempVar= tempVar.splice(0,1); for (let el of tempVar) { propNames.push(Object.keys(el)) } console.log(propNames);
解决方案
你的代码问题出在:
splice(0,1)会返回一个包含被删除元素的数组,执行后tempVar变成了[{Name: "A1", ...}]这样的单元素数组- 后续用
for...of遍历这个数组,把Object.keys(el)的结果(本身就是数组)push到propNames里,最终得到的是二维数组[["Name", "Account", "Status"]],看起来就像包含了索引0
直接简化代码即可,不需要修改原数组,也不需要循环:
const tempVar = [ { "Name" : "A1", "Account" : "Dom", "Status" : "A" }, // 其他对象... ]; // 直接取数组第一个对象,再获取它的属性名 const propNames = Object.keys(tempVar[0]); console.log(propNames); // 输出 ["Name", "Account", "Status"]
如果担心数组为空导致报错,可以加个判断:
const propNames = tempVar.length > 0 ? Object.keys(tempVar[0]) : [];
内容的提问来源于stack exchange,提问作者Tech Learner
相关产品推荐
相关产品推荐

