object.entries()将对象转为[key, value]二维数组,仅遍历自身可枚举字符串属性;常用for...of解构遍历,也可用foreach处理回调;不包含原型属性、symbol键及不可枚举属性。

Object.entries 会把对象转成一个二维数组,每个子数组是 [key, value] 形式,然后你就能用 for...of、forEach 或解构来遍历键值对。
用 for...of 配合解构最直观
这是最常用也最易读的方式:
const obj = { name: 'Alice', age: 30, city: 'Beijing' };
for (const [key, value] of Object.entries(obj)) {
console.log(`${key}: ${value}`);
}
// 输出:
// name: Alice
// age: 30
// city: Beijing
用 forEach 处理每一对键值
适合需要回调逻辑的场景,比如收集、过滤或副作用操作:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 直接传箭头函数,参数用解构写法
[k, v] - 注意:
Object.entries()返回的是新数组,原对象不受影响
Object.entries(obj).forEach(([k, v]) => {
if (typeof v === 'string') {
console.log('字符串字段:', k, v);
}
});
注意只遍历对象自身的可枚举属性
Object.entries 不会访问原型链上的属性,也不会返回不可枚举属性(比如用 Object.defineProperty 设置 enumerable: false 的):
- 继承来的属性(如
toString)不会出现 - Symbol 键名的属性也不会被包含(除非显式用
Object.getOwnPropertySymbols) - 想包含 Symbol 键,得手动合并:
[...Object.entries(obj), ...Object.getOwnPropertySymbols(obj).map(sym => [sym, obj[sym]])]
和 for...in 的关键区别
别把它和 for...in 混用:
-
for...in遍历的是属性名(字符串),还可能遍历到原型链上 -
Object.entries只返回自身可枚举的字符串键值对,更安全、更可控 - 如果要兼容旧环境(IE),需注意
Object.entries是 ES2017 新增,低版本需 polyfill 或用Object.keys().map()替代
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










