iT邦幫忙

0

JavaScript 的new Map()

  • 分享至 

  • xImage
  •  

在 JavaScript 中,new Map() 是一個用於存儲鍵值對的資料結構。它與普通的 JavaScript 物件({})類似,但提供了更多功能和更靈活的鍵支持,例如可以使用任何類型的值(物件、函數、基本類型等)作為鍵。

new Map() 適合用於以下情況:

  • 需要鍵的類型不限於字串或符號:Map 允許任何值作為鍵(例如物件、數字等),而普通物件的鍵會被轉換為字串。
  • 需要鍵值對的插入順序:Map 保留鍵值對的插入順序,而普通物件不一定。
  • 需要高效地查找、插入和刪除操作:Map 的這些操作在時間複雜度上通常優於物件。
  • 需要計算鍵值對數量:Map 提供 size 屬性可以直接獲取鍵值對數量,而物件需要手動計算。
  • 以下是一個使用 new Map() 的實例,展示如何利用其特性:

範例:根據物件作為鍵來儲存資料

假設你有多個使用者物件,需要儲存與這些使用者相關聯的某些資料。

// 創建一個 Map
const user1 = { name: "Alice" };
const user2 = { name: "Bob" };
const user3 = { name: "Charlie" };

const userScores = new Map();

// 將使用者物件作為鍵
userScores.set(user1, 85);
userScores.set(user2, 92);
userScores.set(user3, 78);

// 獲取資料
console.log(userScores.get(user1)); // 85
console.log(userScores.get(user2)); // 92

// 判斷是否包含某個鍵
console.log(userScores.has(user3)); // true

// 刪除某個鍵值對
userScores.delete(user3);
console.log(userScores.has(user3)); // false

// 遍歷 Map
for (const [user, score] of userScores) {
  console.log(`${user.name}: ${score}`);
}

為什麼選擇 Map?

  • 如果使用物件作為鍵,普通物件無法正確處理,因為物件作為鍵會被轉換為 [object Object]。
  • 使用 Map 可以保留插入順序,並提供高效的操作方法(如 set()、get() 等)。
  • 這使得 Map 成為操作複雜鍵值對的理想選擇。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言