object.entries()是javascript中将对象转换为键值对数组的最直接方法,返回二维数组,仅包含自身可枚举属性,不处理原型链、symbol键或不可枚举属性。

Object.entries() 是 JavaScript 中将对象转换为键值对数组的最直接方法,它返回一个二维数组,每个子数组包含一个 [key, value] 对,顺序与 for...in 遍历一致(即按属性定义顺序,对普通对象通常就是书写顺序)。
基本用法:获取所有可枚举自有属性
它只遍历对象**自身、可枚举(enumerable: true)的属性**,不包括原型链上的属性或不可枚举属性(如 Object.prototype.toString 或通过 Object.defineProperty 设置 enumerable: false 的属性):
- 普通对象:直接传入即可
-
空对象:返回空数组
[] - null 或 undefined:会报错(需先校验)
示例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const obj = { a: 1, b: 'hello', c: true };
console.log(Object.entries(obj));
// → [['a', 1], ['b', 'hello'], ['c', true]]
配合解构和循环处理键值对
返回的数组天然适合用 for...of 或 forEach 遍历,也可结合数组解构快速提取 key 和 value:
- 用
for...of+ 解构:for (const [key, value] of Object.entries(obj)) { ... } - 用
map转换数据:Object.entries(obj).map(([k, v]) => `${k}: ${v}`) - 用
filter筛选条件:Object.entries(obj).filter(([, v]) => typeof v === 'string')
注意类型与边界情况
虽然参数是对象,但 JavaScript 会尝试强制转换:
-
字符串:会被转成类数组对象,返回索引-字符对,如
Object.entries('ab') → [['0','a'], ['1','b']] -
数字/布尔值:先转为对应包装对象,但没有可枚举自有属性,返回空数组
[] -
Symbol 属性:不会被包含(
Object.entries忽略 Symbol 键) - 继承属性:不会被包含(仅自有属性)
替代方案对比(何时不用 entries)
如果需要包含不可枚举属性,用 Object.getOwnPropertyNames() + Object.getOwnPropertyDescriptor();如果需要 Symbol 键,用 Object.getOwnPropertySymbols();若要完整序列化(含原型、Symbol、不可枚举),需手动组合。但日常「遍历可枚举键值对」场景,Object.entries() 最简洁可靠。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










