Object.fromEntries()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

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)

引數

iterable

一個 可迭代物件,例如包含物件列表的 ArrayMap。每個物件應包含兩個屬性:

0

一個代表屬性鍵的字串或 symbol

1

屬性值。

通常,這個物件實現為一個二元陣列,第一個元素是屬性鍵,第二個元素是屬性值。

返回值

一個新物件,其屬性由可迭代物件中的條目給出。

描述

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

瀏覽器相容性

另見