Object.fromEntries()

一、方法概述

Object.fromEntries()是JavaScript中用于將鍵值對數(shù)組轉(zhuǎn)換為對象的靜態(tài)方法。其語法為:

Object.fromEntries(entries);

其中entries必須是由[key, value]形式元素組成的可迭代對象。

const entries = [
  ['name', 'Alice'],
  ['age', 25],
  ['city', 'New York']
];

const obj = Object.fromEntries(entries);
console.log(obj);
// 輸出: { name: 'Alice', age: 25, city: 'New York' }
  1. 表單數(shù)據(jù)處理
const formData = Object.fromEntries(new URLSearchParams('name=Alice&age=25')); 
// 輸出: {name: "Alice", age: "25"} 
  1. 數(shù)組去重統(tǒng)計
const counts = Object.fromEntries(   dataArray.map(item => [item, (counts[item] || 0) + 1]) ); 
  1. Map結(jié)構(gòu)轉(zhuǎn)換
const map = new Map([['key1', 'value1'], ['key2', 'value2']]); const obj = Object.fromEntries(map); 

Object.fromEntries() 是 JavaScript 中用于將鍵值對列表(如數(shù)組、Map)轉(zhuǎn)換為對象的實用方法,常見用途如下:

一、數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換

Map/數(shù)組轉(zhuǎn)對象
將 Map 或二維數(shù)組快速轉(zhuǎn)換為普通對象,語法簡潔:


const map = new Map([['name', 'Alice'], ['age', 30]]);
const obj = Object.fromEntries(map); // { name: "Alice", age: 30 }

二維數(shù)組同理:


const arr = [['id', 101], ['status', true]];
Object.fromEntries(arr); // { id: 101, status: true }

URL 查詢參數(shù)解析
結(jié)合 URLSearchParams 解析查詢字符串為對象:

const params = new URLSearchParams('name=John&age=25');
const queryObj = Object.fromEntries(params); // { name: "John", age: "25" }

? 注意:重復(fù)鍵時,后出現(xiàn)的值會覆蓋前值(如 ?a=1&a=2 輸出 {a: "2"})。

二、數(shù)據(jù)加工處理

對象屬性批量修改
結(jié)合 Object.entries() 實現(xiàn)鏈?zhǔn)讲僮鳎?/p>

const user = { x: 10, y: 20 };
// 所有值乘以2
const updated = Object.fromEntries(
  Object.entries(user).map(([key, val]) => [key, val * 2])
); // { x: 20, y: 40 }

過濾或重構(gòu)屬性
提取特定字段或轉(zhuǎn)換數(shù)據(jù)類型:

const data = { name: "Alice", age: "30", temp: "ignore" };
// 僅保留 age 并轉(zhuǎn)為數(shù)字
const cleaned = Object.fromEntries(
  Object.entries(data)
    .filter(([key]) => key === 'age')
    .map(([k, v]) => [k, Number(v)])
); // { age: 30 }

鍵值交換
快速反轉(zhuǎn)對象的鍵與值:

const obj = { a: 1, b: 2 };
const swapped = Object.fromEntries(
  Object.entries(obj).map(([k, v]) => [v, k])
); // { 1: "a", 2: "b" }

三、與 Map 結(jié)構(gòu)協(xié)作
Map 轉(zhuǎn)普通對象存儲/傳輸
需要將 Map 數(shù)據(jù)轉(zhuǎn)為 JSON 或發(fā)送給 API 時:

const configMap = new Map([['theme', 'dark'], ['notifications', true]]);
const configObj = Object.fromEntries(configMap);
JSON.stringify(configObj); // '{"theme":"dark","notifications":true}'

核心總結(jié)
核心能力:將鍵值對集合(數(shù)組、Map、URLSearchParams)轉(zhuǎn)為對象。
逆操作:與 Object.entries() 互為逆操作,適合鏈?zhǔn)綌?shù)據(jù)處理。
注意事項:
重復(fù)鍵時,后值覆蓋前值;
符號(Symbol)鍵也可轉(zhuǎn)換。

通過上述場景可見,Object.fromEntries() 在數(shù)據(jù)轉(zhuǎn)換、接口處理和對象重構(gòu)中極大提升了代碼效率。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容