Object.fromEntries 接收一个可迭代对象,其中每项为长度为 2 的数组(如 [["key", "value"]]),支持二维数组、Map 或手动构造的键值对列表。

Object.fromEntries 是 JavaScript 中用于将“键值对列表”(如数组或可迭代对象)转换为普通对象的静态方法,和 Object.entries() 互为逆操作。
它接收什么类型的参数?
参数必须是一个可迭代对象,其中每一项是长度为 2 的数组(或类数组),形式为 [key, value]。常见输入包括:
- 由
Object.entries()生成的二维数组 - Map 实例(Map 本身是可迭代的,遍历时按插入顺序返回
[key, value]) - 手动构造的二维数组,例如
[["a", 1], ["b", 2]]
基本用法示例
从二维数组还原对象:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const entries = [["name", "Alice"], ["age", 30], ["city", "Beijing"]];
const obj = Object.fromEntries(entries);
// { name: "Alice", age: 30, city: "Beijing" }
从 Map 还原对象:
立即学习“Java免费学习笔记(深入)”;
const map = new Map([["x", 10], ["y", 20]]);
const obj = Object.fromEntries(map);
// { x: 10, y: 20 }
实用场景:过滤或转换后再构建成对象
配合 filter、map 等方法,可灵活处理键值对再还原:
- 只保留数值型 value 的条目
- 把 key 全部转为大写
- 给 value 添加前缀或做格式化
const raw = [["a", 1], ["b", "hello"], ["c", null], ["d", 42]];
// 只保留 value 是数字且大于 10 的项
const filtered = raw.filter(([, v]) => typeof v === "number" && v > 10);
const result = Object.fromEntries(filtered); // { d: 42 }
// 或者转换 key 和 value
const transformed = raw.map(([k, v]) => [k.toUpperCase(), String(v).length]);
const newObj = Object.fromEntries(transformed); // { A: 1, B: 5, C: 4, D: 2 }
注意点和常见坑
- 如果某个子项不是长度为 2 的可索引结构(比如
["key"]或["k", "v", "extra"]),会取前两个元素,多余部分被忽略;若少于两个,value会是undefined - 重复的 key 会被后者覆盖(符合对象属性赋值规则)
- key 会被自动转为字符串(除非是 Symbol),例如
[[true, "yes"], [0, "zero"]]→{ "true": "yes", "0": "zero" } - 不支持直接传入普通对象,必须是可迭代结构;想处理对象请先用
Object.entries()

















