Object.entries()是ES2017引入的方法,将对象转为[key, value]二维数组,仅处理自身可枚举字符串键,数字键转字符串,Symbol键被忽略,支持map/filter/reduce等链式操作,空对象返回[],数组和字符串按索引/位置展开,null/undefined报错。

Object.entries() 是 ES2017(常被泛称为 ES6+)引入的方法,专门用于把一个普通对象转换成由 [key, value] 组成的二维数组。
基本用法:直接传入对象
它只处理对象自身的可枚举字符串键(不包括原型链上的属性),返回结果顺序与 for...in 一致。例如:
const obj = { a: 1, b: 'hello', c: true };-
Object.entries(obj)→[ ['a', 1], ['b', 'hello'], ['c', true] ]
对特殊类型键的处理
数字或 Symbol 类型的键会被自动转为字符串形式参与输出:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
- 数字键:
{ 100: 'hundred' }→[ ['100', 'hundred'] ] - Symbol 键:
{ [Symbol('x')]: 'sym' }→ 这个键不会出现在结果中(因为 Symbol 键不可枚举) - 字符串键保持原样,包括空格、中文等:
{ 'user name': 'Alice' }→[ ['user name', 'Alice'] ]
配合其他操作做数据转换
返回的是标准数组,天然支持 map、filter、reduce 等链式方法:
- 筛选特定值:
Object.entries(obj).filter(([, v]) => typeof v === 'string') - 修改键名:
Object.entries(obj).map(([k, v]) => [k.toUpperCase(), v]) - 转回对象(需配合
Object.fromEntries):Object.fromEntries(Object.entries(obj).filter(...))
注意边界情况
某些输入会得到“看似奇怪”但符合规范的结果:
- 空对象:
{}→[](空数组) - 数组对象:
[1, 2, 3]→[ ['0', 1], ['1', 2], ['2', 3] ](索引转为字符串键) - 字符串:
'ab'→[ ['0', 'a'], ['1', 'b'] ](按字符位置展开) - null / undefined 会报错,不能直接传入

















