欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實(shí)現(xiàn)HashTable(哈希表)的實(shí)例分析

 更新時(shí)間:2016年11月21日 15:52:59   作者:逆心  
本文詳細(xì)介紹javascript哈希表的實(shí)例分析及用法。下面就跟小編一起來(lái)學(xué)習(xí)下吧

一、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)文章

最新評(píng)論