Object.fromEntries()
Object.fromEntries() 静态方法可以将键值对列表转换为对象。
试一试
const entries = new Map([
["foo", "bar"],
["baz", 42],
]);
const obj = Object.fromEntries(entries);
console.log(obj);
// Expected output: Object { foo: "bar", baz: 42 }
语法
js
Object.fromEntries(iterable)
参数
返回值
一个新对象,其属性由可迭代对象中的条目给出。
描述
Object.fromEntries() 方法接收一个键值对列表,并返回一个新对象,该对象的属性由这些条目给出。`iterable` 参数预期为一个实现了 `[Symbol.iterator]()` 方法的对象。该方法返回一个迭代器对象,该对象会生成一个二元类数组对象。第一个元素是要用作属性键的值,第二个元素是要与该属性键关联的值。
Object.fromEntries() 执行 Object.entries() 的逆操作,不同之处在于 `Object.entries()` 只返回字符串键的属性,而 `Object.fromEntries()` 也可以创建 symbol 键的属性。
注意: 与 Array.from() 不同,`Object.fromEntries()` 不会使用 `this` 的值,因此在其他构造函数上调用它不会创建该类型的对象。
示例
将 Map 转换为 Object
使用 `Object.fromEntries`,您可以将 Map 转换为 Object。
js
const map = new Map([
["foo", "bar"],
["baz", 42],
]);
const obj = Object.fromEntries(map);
console.log(obj); // { foo: "bar", baz: 42 }
将 Array 转换为 Object
使用 `Object.fromEntries`,您可以将 Array 转换为 Object。
js
const arr = [
["0", "a"],
["1", "b"],
["2", "c"],
];
const obj = Object.fromEntries(arr);
console.log(obj); // { 0: "a", 1: "b", 2: "c" }
对象转换
使用 `Object.fromEntries`、它的逆方法 Object.entries() 和 数组操作方法,您可以这样转换对象:
js
const object1 = { a: 1, b: 2, c: 3 };
const object2 = Object.fromEntries(
Object.entries(object1).map(([key, val]) => [key, val * 2]),
);
console.log(object2);
// { a: 2, b: 4, c: 6 }
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-object.fromentries |
浏览器兼容性
加载中…