object.entries()是es6方法,将对象的可枚举自身属性转为[key, value]二维数组,不包含不可枚举属性、原型属性和symbol键,与object.keys()、object.values()互补。

Object.entries() 是 ES6 引入的方法,用于把一个对象的**可枚举自身属性**转换成一个二维数组,每个子数组是 [key, value] 形式。
基本用法:返回键值对数组
它只处理对象自身的、可枚举的属性(不包括原型链上的属性),返回格式为:[ [k1, v1], [k2, v2], ... ]。
例如:
const obj = { a: 1, b: 2, c: 3 };
console.log(Object.entries(obj));
// → [ ['a', 1], ['b', 2], ['c', 3] ]
配合解构和遍历使用更灵活
得到数组后,可以轻松用 for...of、map、forEach 等处理,还能直接解构每一对键值:
- 遍历并打印:
for (const [key, value] of Object.entries(obj)) {
console.log(`${key}: ${value}`);
}
// a: 1
// b: 2
// c: 3
- 转成新对象或筛选数据:
// 只保留 value > 1 的项
const filtered = Object.entries(obj)
.filter(([, v]) => v > 1)
.reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});
// → { b: 2, c: 3 }
注意它不处理不可枚举或继承的属性
Object.entries() 不会返回:
- 通过
Object.defineProperty设置的enumerable: false属性 - 原型上的属性(如
toString) - Symbol 类型的键(除非显式定义为可枚举)
const obj2 = {};
Object.defineProperty(obj2, 'hidden', {
value: 'nope',
enumerable: false
});
obj2.x = 'yes';
console.log(Object.entries(obj2)); // → [ ['x', 'yes'] ]
与 Object.keys / Object.values 的关系
三者是互补的:
-
Object.keys(obj)→['a', 'b', 'c'] -
Object.values(obj)→[1, 2, 3] -
Object.entries(obj)→[['a',1], ['b',2], ['c',3]]
它们都遵循相同的枚举规则,只是返回结构不同。需要同时操作键和值时,entries 最直观高效。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











