Object.entries()是JavaScript内置方法,将对象转为[key, value]二维数组,仅遍历自身可枚举属性,遵循添加顺序,不包含Symbol属性;支持遍历、转Map、筛选还原等场景,但不兼容IE。

Object.entries() 是 JavaScript 内置方法,能直接把一个普通对象转成由 [key, value] 组成的二维数组,适合遍历、解构或进一步处理。
基本用法:一步得到键值对数组
调用 Object.entries(obj),传入任意对象(需是可枚举属性),返回一个数组,每个元素都是长度为 2 的数组:[键名, 键值]。
- 只遍历对象自身的、可枚举的属性(不包括原型链上的)
- 属性顺序遵循“添加顺序”,和
for...in或Object.keys()一致 - Symbol 属性默认不会被包含,除非显式使用
Object.getOwnPropertySymbols()
常见使用场景
✅ 遍历对象并解构:
const obj = { a: 1, b: 2 };<br>
for (const [key, value] of Object.entries(obj)) {<br>
console.log(key, value); // 'a' 1, 'b' 2<br>
}
✅ 转成 Map:const map = new Map(Object.entries(obj));
✅ 筛选或映射后还原为对象:Object.fromEntries(Object.entries(obj).filter(([k]) => k.startsWith('user')))
注意边界情况
如果传入 null 或 undefined,会抛出 TypeError;
传入原始类型(如字符串、数字)会先自动包装成对象,再提取可枚举属性:
-
Object.entries('ab')→[ ['0', 'a'], ['1', 'b'] ]</li> <li><code>Object.entries(123)
→[](数字包装对象无自有可枚举属性) - 空对象
{}返回空数组[]
兼容性提醒
支持现代浏览器和 Node.js 7.0+;
IE 完全不支持,如需兼容旧环境,可用 polyfill 或替代写法(如 Object.keys(obj).map(k => [k, obj[k]]))。


















