JavaScript >> Javascript 文檔 >  >> Tags >> Arrays

JavaScript 中的哈希表/關聯數組——如何以及為什麼?

JavaScript 沒有稱為“哈希表”的本機對像類——但這並不意味著該語言中不存在哈希表的功能。以下是如何在 JavaScript 中使用哈希表,以及工作示例代碼。

什麼是哈希表?

也稱為 哈希圖 ,哈希表是一種數據結構,它將鍵列表映射到每個鍵的對應值列表。可以通過關聯的鍵訪問表中的任何值。

在後台,哈希表會使用哈希函數將鍵轉換為索引,可以用來快速查找關聯的值。這使它們成為存儲任何長度的臨時數據的一種高效方式。

關聯數組

哈希表的一種形式是 PHP 中的關聯數組。如果您正在尋找與關聯數組提供的相同功能,那麼下面的示例應該可以滿足您的需求。

JavaScript 對象可以用作哈希表嗎?

JavaScript 對象可以用作哈希表,但它們缺少一些功能。以如下對象為例:

var myObject = {
    "ACME Plumbing": "123 Fake Street",
    "FOOBAR Pool Services": "198 Pretend Place"
};

它是一個簡單的對象,將地址簿中的值存儲為鍵/值對——業務名稱是鍵,業務地址是值。

這似乎符合哈希表的定義(從技術上講,Object 類確實以相同的方式存儲東西)——鍵值對被存儲並且可以作為對象屬性檢索,但是有一些缺點。

JavaScript 對像類包括許多其他用於對像操作的東西。這些屬性和方法可能會與您計劃存儲在表中的數據衝突。

Object 類也不知道它自己的長度,因此必須對其進行迭代以找出有多少條目。

最重要的是,在按存儲順序枚舉存儲的值時會遇到問題 - JavaScript 對像在迭代時並不總是遵循其中項目的插入順序。

哈希表最佳實踐——使用 Map 類

JavaScript 中的 Map 對象提供哈希表或哈希映射的全部功能。它保存鍵值對,並記住它們插入表中的特定順序。此外,它不會讓你插入與它自己的方法或屬性衝突的值。

如果您希望在代碼中使用哈希表功能,Map 對像是最簡單的方法。

示例——使用 Map 創建哈希表

下面的例子演示瞭如何使用 Map 對像在 JavaScript 中實現哈希映射功能:

// Create a Map object
var myMap = new Map();

// Set some key/value pairs
myMap.set("ACME Plumbing", "123 Fake Street");
myMap.set("FOOBAR Pool Services", "198 Pretend Place");

// Retrieve a value by it's key
myMap.get("ACME Plumbing"); // "123 Fake Street"

// Map objects can be easily iterated over to get all values
for (let [key, value] of myMap) {
    console.log(key + ' :  ' + value);
}


Tutorial JavaScript 教程
  1. 我做了 5 年(社交)遊戲開發人員,問我任何問題!

  2. 如何動態創建字典和添加鍵值對?

  3. 如何將 JSON 對象轉換為 JavaScript 數組?

  4. NGRX 研討會筆記 - 文件夾結構

  5. 在 Expo 中使用 TypeScript 介紹 React Native Maps

  6. React 中的異步組件 - 開源庫

  7. TypeScript 的問題

  1. 開始使用另一個開發人員編寫的項目

  2. React Router - 使用位置狀態進行自定義 UI 導航

  3. 將不帶空格的文本拆分為 Node.js 中的單詞列表

  4. 使用 Github Actions 和 Docker 將 React 應用程序部署到 DigitalOcean

  5. JavaScript 中的 Array.splice() 方法🚀

  6. 穆喬感謝您的評論

  7. IntersectionOberserver 與新出現的元素

  1. 使用 Jest 測試 React 組件是否不存在

  2. 如何使用 JSON、jQuery 將一組複雜對象發佈到 ASP.NET MVC 控制器?

  3. TypeScript 中的 XState 簡介

  4. 17 多篇 7 月學習 Javascript 的文章