js實(shí)現(xiàn)HashTable(哈希表)的實(shí)例分析
一、javascript哈希表簡(jiǎn)介
javascript里面是沒(méi)有哈希表的,一直在java,C#中有時(shí)候用到了這一種數(shù)據(jù)結(jié)構(gòu),javascript里面若沒(méi)有,感覺(jué)非常不順手。細(xì)細(xì)看來(lái),其實(shí)javascript的object的屬性其實(shí)與哈希表非常類似。
如:
var person = {}; person["name"] = "關(guān)羽";
我們只需要在其基礎(chǔ)上再封裝一些HashTable的函數(shù),就能夠得到一個(gè)精簡(jiǎn)版的哈希表。
加入函數(shù)如下:
函數(shù)名 | 說(shuō)明 | 返回值 |
add(key,value) | 添加項(xiàng) | 無(wú) |
getValue(key) | 根據(jù)key取值 | object |
remove(key) | 根據(jù)key刪除一項(xiàng) | 無(wú) |
containsKey(key) | 是否包含某個(gè)key | bool |
containsValue(value) | 是否包含某個(gè)值 | bool |
getValues() | 獲取所有的值的數(shù)組 | array |
getKeys() | 獲取所有的key的數(shù)組 | array |
getSize() | 獲取項(xiàng)總數(shù) | int |
clear() | 清空哈希表 | 無(wú) |
二、代碼實(shí)現(xiàn)
其具體的實(shí)現(xiàn)可以查看代碼,都不算很復(fù)雜的東西。
function HashTable() { var size = 0; var entry = new Object(); this.add = function (key, value) { if (!this.containsKey(key)) { size++; } entry[key] = value; } this.getValue = function (key) { return this.containsKey(key) ? entry[key] : null; } this.remove = function (key) { if (this.containsKey(key) && (delete entry[key])) { size--; } } this.containsKey = function (key) { return (key in entry); } this.containsValue = function (value) { for (var prop in entry) { if (entry[prop] == value) { return true; } } return false; } this.getValues = function () { var values = new Array(); for (var prop in entry) { values.push(entry[prop]); } return values; } this.getKeys = function () { var keys = new Array(); for (var prop in entry) { keys.push(prop); } return keys; } this.getSize = function () { return size; } this.clear = function () { size = 0; entry = new Object(); } }
簡(jiǎn)單使用示例:
var manHT = new HashTable(); manHT.add("p1","劉備"); manHT.add("p2","關(guān)羽"); $("#div1").text(manHT.getValue("p1"));
以上是本文的全部?jī)?nèi)容,希望對(duì)大家有所幫助!
相關(guān)文章
JS removeAttribute()方法實(shí)現(xiàn)刪除元素的某個(gè)屬性
這篇文章主要介紹了JS removeAttribute()方法實(shí)現(xiàn)刪除元素的某個(gè)屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01利用JS解決ie6不支持max-width,max-height問(wèn)題的方法
本篇文章主要介紹了利用JS解決ie6不支持max-width,max-height問(wèn)題的方法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01JavaScript 監(jiān)聽(tīng)textarea中按鍵事件
不同的瀏覽器中的事件監(jiān)聽(tīng)機(jī)制是不同的,以onKeyPress事件為例。2009-10-10JavaScript空數(shù)組的every()方法實(shí)踐
every()方法用于檢測(cè)數(shù)組中的所有元素是否都滿足指定條件, 本文主要介紹了JavaScript空數(shù)組的every()方法實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03js將當(dāng)前時(shí)間格式化為 年-月-日 時(shí):分:秒的實(shí)現(xiàn)代碼
這篇文章主要介紹了js將當(dāng)前時(shí)間格式化為 年-月-日 時(shí):分:秒主要是使用js的Date()對(duì)象,將系統(tǒng)當(dāng)前時(shí)間格式化為年-月-日 時(shí):分:秒,需要的朋友可以參考下2018-01-01