object.entries()返回的二维数组可直接传给map构造函数初始化;但数字/布尔键会被转为字符串,symbol键保留,若需保留原始键类型应手动set;空对象生成空map;支持es2017+,旧环境可用object.keys().map()模拟。

JavaScript 中可以用 Object.entries() 返回的二维数组直接作为参数传给 Map 构造函数,实现一键初始化。
基本用法:直接传入 entries 数组
Object.entries(obj) 把普通对象转成形如 [["key1", val1], ["key2", val2]] 的键值对数组,而 Map 构造函数恰好接受这种格式的可迭代结构。
示例:
const obj = { a: 1, b: 2, c: 3 };
const map = new Map(Object.entries(obj));
<p>console.log(map.get('a')); // 1
console.log(map.size); // 3</p>注意 key 类型会变成字符串
Object.entries() 只能遍历对象自身的、可枚举的**字符串键**(或 Symbol 键),且会把所有键强制转为字符串(Symbol 除外)。所以原始对象若含数字键、布尔键或非字符串原始类型键,会被自动转换:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
{ 42: 'foo' }→[['42', 'foo']](数字键变字符串) -
{ true: 'yes' }→[['true', 'yes']](布尔键变字符串) -
{ [Symbol('s')]: 'sym' }→[[Symbol('s'), 'sym']](Symbol 键保留)
如果需要保留原始键类型(比如数字或对象作为键),就不能依赖 Object.entries(),应手动用 map.set(key, value) 初始化。
兼容性与空对象处理
Object.entries() 在 IE 中不支持(需 ES2017+),若需兼容旧环境,可用 Object.keys(obj).map(key => [key, obj[key]]) 模拟。另外,空对象 {} 传入后生成的是空 Map,不会报错:
new Map(Object.entries({})); // Map(0) {}
进阶:结合解构或过滤再初始化
你可以在传入前对 entries 做处理,比如过滤掉某些键、修改值、或只取前 N 项:
const obj = { a: 1, b: 2, c: 3, d: 4 };
<p>// 只取前两个键值对
const map1 = new Map(Object.entries(obj).slice(0, 2));</p><p>// 过滤掉值为偶数的项
const map2 = new Map(
Object.entries(obj).filter(([, v]) => v % 2 === 1)
);</p><p>// 值翻倍
const map3 = new Map(
Object.entries(obj).map(([k, v]) => [k, v * 2])
);</p>Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










