Object.fromEntries 是 ES2019 引入的方法,将键值对数组或可迭代对象(如 Map)转换为对象;键自动转字符串(symbol 除外),值保持原类型;常与 Object.entries 配合实现对象筛选或浅拷贝。

Object.fromEntries 是 ES6(准确说是 ES2019)引入的方法,专门用来把键值对数组(即每个元素是 [key, value] 的二维数组)转成普通对象。
基本用法:直接转换二维数组
只要数组里的每一项都是长度为 2 的可迭代结构(最常见的是数组),就能直接转:
const entries = [['name', 'Alice'], ['age', 28], ['city', 'Beijing']];
const obj = Object.fromEntries(entries);
console.log(obj);
// { name: 'Alice', age: 28, city: 'Beijing' }
支持 Map 对象,不只是数组
它不只认数组,也接受任何可迭代对象,比如 Map:
const map = new Map([['a', 1], ['b', 2], ['c', 3]]);
const obj = Object.fromEntries(map);
console.log(obj); // { a: 1, b: 2, c: 3 }
注意键和值的类型处理
键会被自动转成字符串(除非是 symbol);值保持原类型:
- 数字、布尔、null、undefined 作键 → 转成字符串(如
1变成"1") - symbol 作键 → 保留为 symbol 键(不会被转)
- 对象或函数作值 → 值本身被保留,不深拷贝
常见配合场景
常和 Object.entries 配合做对象浅拷贝或筛选:
const origin = { a: 1, b: 2, c: 3, d: 4 };
// 只保留键以 'a' 或 'c' 开头的属性
const filtered = Object.fromEntries(
Object.entries(origin).filter(([key]) => ['a', 'c'].includes(key))
);
console.log(filtered); // { a: 1, c: 3 }


















