如何在JavaScript中循环对象?从指定fields对象提取键名数组
在JavaScript中提取对象键名组成数组的方法
嘿,这需求太常见啦!针对你给出的对象结构,我给你分享几种简单好用的实现方式,轻松得到你想要的res = ['summary','issuetype','description']。
首先先明确我们的目标对象(把你给的片段补全成可直接操作的完整对象):
const targetObj = { "fields": { "summary": { "required": true }, "issuetype": { "required": true }, "description": { "required": false } } };
方法一:最简洁的Object.keys()(首推!)
Object.keys()是JavaScript专门用来获取对象自身可枚举属性键名数组的方法,完全贴合你的需求,一行代码就能搞定:
const res = Object.keys(targetObj.fields); console.log(res); // 输出:['summary','issuetype','description']
这个方法高效又直观,不需要额外的循环操作,直接拿到你要的结果。
方法二:for...in循环(适合需要额外处理的场景)
如果你需要在遍历过程中对每个键做额外判断或处理(比如过滤某些特定键),可以用for...in循环,记得加上hasOwnProperty判断——这能避免遍历到原型链上的继承属性,让代码更安全:
const res = []; for (const key in targetObj.fields) { if (targetObj.fields.hasOwnProperty(key)) { res.push(key); } } console.log(res); // 同样得到目标数组
方法三:ES6+的Object.entries()结合map
这个方法稍显迂回,但如果你同时需要处理键和值的话会很实用:通过Object.entries()把键值对转成二维数组,再用map提取出每个数组的第一个元素(也就是键名):
const res = Object.entries(targetObj.fields).map(([key]) => key); console.log(res); // 输出目标数组
总结一下,如果你只是单纯要提取键名数组,方法一的Object.keys()是最优选择,简洁高效一步到位。
内容的提问来源于stack exchange,提问作者kali_rey
相关产品推荐
相关产品推荐

