最常用方法是object.entries(),返回包含[key, value]的二维数组,只遍历自身可枚举属性,顺序按插入顺序;仅需键或值时可用object.keys()或object.values();嵌套对象需手动递归处理,map/set需调用原生entries()方法。

在 JavaScript 中,获取对象所有键值对的数组,最常用的方法是使用 Object.entries(),它会返回一个二维数组,每个子数组包含 [key, value]。
获取键值对数组(推荐)
Object.entries() 是标准、简洁且兼容性良好的方式(ES2017+),适用于普通对象(不包括原型链上的属性):
- 只遍历对象自身的可枚举属性
- 返回格式为
[["key1", "value1"], ["key2", "value2"]] - 顺序与
for...in一致(按插入顺序,对字符串/符号键有效)
示例:
const obj = { a: 1, b: 2, c: 3 };console.log(Object.entries(obj));
// → [["a", 1], ["b", 2], ["c", 3]]
只取键或只取值的数组
如果只需要键或值,可用对应方法替代,更语义化:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
-
Object.keys(obj)→ 返回字符串键数组:["a", "b", "c"] -
Object.values(obj)→ 返回值数组:[1, 2, 3]
注意:这三个方法(keys/values/entries)行为一致——都忽略不可枚举属性和原型链属性。
处理嵌套对象或特殊类型
Object.entries() 不会递归展开嵌套对象。若需扁平化或深度提取,需手动遍历或借助工具函数:
- 对嵌套对象,可结合
Array.flatMap()和递归逻辑 - 对
Map或Set,不能直接用Object.entries(),应调用其原生方法:map.entries() - 对类数组对象(如
arguments),需先转为真对象再使用(或用Array.from())
兼容旧环境的写法(IE 等)
若需支持 IE11 及更早版本,可用 Object.keys() + map 模拟:
该写法结果与 Object.entries() 相同,且能覆盖绝大多数场景。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










