亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、javascript哈希表簡介

javascript里面是沒有哈希表的,一直在java,C#中有時(shí)候用到了這一種數(shù)據(jù)結(jié)構(gòu),javascript里面若沒有,感覺非常不順手。細(xì)細(xì)看來,其實(shí)javascript的object的屬性其實(shí)與哈希表非常類似。

如:

var person = {};
person["name"] = "關(guān)羽";

我們只需要在其基礎(chǔ)上再封裝一些HashTable的函數(shù),就能夠得到一個(gè)精簡版的哈希表。

加入函數(shù)如下:

函數(shù)名 說明 返回值
add(key,value) 添加項(xiàng)
getValue(key) 根據(jù)key取值 object
remove(key) 根據(jù)key刪除一項(xiàng)
containsKey(key) 是否包含某個(gè)key bool
containsValue(value) 是否包含某個(gè)值 bool
getValues() 獲取所有的值的數(shù)組 array
getKeys() 獲取所有的key的數(shù)組 array
getSize() 獲取項(xiàng)總數(shù) int
clear() 清空哈希表

二、代碼實(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();
 }
}

簡單使用示例:

var manHT = new HashTable();
manHT.add("p1","劉備");
manHT.add("p2","關(guān)羽");
$("#div1").text(manHT.getValue("p1"));

 

以上是本文的全部內(nèi)容,希望對(duì)大家有所幫助!

相關(guān)文章

最新評(píng)論