Object.entries()是JavaScript中将对象转换为键值对数组的方法,返回二维数组[[key,value]],仅遍历自身可枚举属性,支持for...of解构、map/filter变形及URLSearchParams转换,不兼容IE,传入null/undefined会抛错。

Object.entries() 是 JavaScript 中用于将对象转换为键值对数组的方法,特别适合需要同时访问对象的键和值的迭代场景。
获取对象的键值对数组
Object.entries() 接收一个对象作为参数,返回一个二维数组,每个子数组包含两个元素:[key, value]。它只遍历对象自身的可枚举属性,不包括原型链上的属性。
例如:
const user = { name: 'Alice', age: 30, city: 'Beijing' };
console.log(Object.entries(user));
// [['name', 'Alice'], ['age', 30], ['city', 'Beijing']]
配合 for...of 遍历对象
返回的数组天然适配 for...of 循环,可直接解构出键和值,代码简洁清晰。
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
立即学习“Java免费学习笔记(深入)”;
- 避免使用 for...in(需手动过滤原型属性)
- 比 Object.keys() + 索引取值更直观
- 比 Object.values() 多保留了键信息
for (const [key, value] of Object.entries(user)) {
console.log(`${key}: ${value}`);
}
// name: Alice
// age: 30
// city: Beijing
转换对象结构或筛选属性
结合数组方法(如 map、filter),可轻松实现对象的变形操作。
- 只保留字符串类型的值:
Object.fromEntries(Object.entries(obj).filter(([, v]) => typeof v === 'string')) - 给所有键加上前缀:
Object.fromEntries(Object.entries(obj).map(([k, v]) => [`prefix_${k}`, v])) - 将对象转为 URL 查询字符串:
new URLSearchParams(Object.entries(obj)).toString()
注意兼容性与边界情况
Object.entries() 在 IE 中不支持,现代浏览器及 Node.js 6+ 均可用。使用时需注意:
- 传入 null 或 undefined 会抛出 TypeError,建议先做类型检查
- Symbol 类型的键会被包含(只要它是可枚举的)
- 返回顺序遵循对象属性定义顺序(ES2015+ 规范保证)
- 不可枚举属性(如通过 Object.defineProperty 添加且 enumerable: false)不会出现

















