get method 在幹嘛?
丟入欲搜尋元素的 key 進去 get method,
如果有找到符合的元素就回傳該元素的 value,
若最終都沒找到相符的
元素,就回傳 null。
get method 程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| // ... HashTable.prototype.get = function(key) { const index = this.hash(key); if(!this.buckets[index]) return null; else { let currentNode = this.buckets[index]; while(currentNode) { if(currentNode.key === key) return currentNode.value; currentNode = currentNode.next; } return null; } }
|
解析一下 get 的程式碼內容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| HashTable.prototype.get = function(key) { const index = this.hash(key); // 先找出傳入的 key 值經過hash 後的對應 index if(!this.buckets[index]) return null; // 若找不到該 index 對應的 bucket 那就代表根本沒有這個 bucket 存在 Hash Table 中,那就可以直接回傳 null else { let currentNode = this.buckets[index]; // 取得 bucket 的第一個元素 // 遍歷 bucket 的 list 裡的所有元素, // 若發現有任何元素的 key 值等於傳入的 key 值,則回傳該元素的 value // 若遍歷完整個 list 後,沒有任何元素的 key 值符合,就回傳 null while(currentNode){ if(currentNode.key === key) return currentNode.value; currentNode = currentNode.next; } return null; } }
|
Take away
- get method 跟 insert method 實作的方式雷同,
只是 get 的遍歷條件是當前元素,
insert 的遍歷條件是當前元素的 next 指向的元素。
- 若 get 有找到相同 key 值的元素,則回傳此元素的 value,若都沒有就回傳 null。
Reference Link