javascript hashtable實(shí)現(xiàn)代碼
var arr = new Array();
arr['item1'] = 'the value of item 1 ';
arr['item2'] = 'the value of item 2 ';
alert(arr['item1']);
alert(arr['item2']);
但上述功能,不符我們的實(shí)際要求,另外查詢(xún)遍歷也不方便,我們需要在Array的基礎(chǔ)上進(jìn)行擴(kuò)展,
下面我們可以用js中的數(shù)組來(lái)實(shí)現(xiàn)類(lèi)似的hashtable的功能,
function Hashtable(){
this.clear = hashtable_clear;
this.containsKey = hashtable_containsKey;
this.containsValue = hashtable_containsValue;
this.get = hashtable_get;
this.isEmpty = hashtable_isEmpty;
this.keys = hashtable_keys;
this.put = hashtable_put;
this.remove = hashtable_remove;
this.size = hashtable_size;
this.toString = hashtable_toString;
this.values = hashtable_values;
this.hashtable = new Array();
}
function hashtable_clear(){
this.hashtable = new Array();
}
function hashtable_containsKey(key){
var exists = false;
for (var i in this.hashtable) {
if (i == key && this.hashtable[i] != null) {
exists = true;
break;
}
}
return exists;
}
function hashtable_containsValue(value){
var contains = false;
if (value != null) {
for (var i in this.hashtable) {
if (this.hashtable[i] == value) {
contains = true;
break;
}
}
}
return contains;
}
function hashtable_get(key){
return this.hashtable[key];
}
function hashtable_isEmpty(){
return (this.size == 0) ? true : false;
}
function hashtable_keys(){
var keys = new Array();
for (var i in this.hashtable) {
if (this.hashtable[i] != null)
keys.push(i);
}
return keys;
}
function hashtable_put(key, value){
if (key == null || value == null) {
throw 'NullPointerException {' + key + '},{' + value + '}';
}else{
this.hashtable[key] = value;
}
}
function hashtable_remove(key){
var rtn = this.hashtable[key];
//this.hashtable[key] =null;
this.hashtable.splice(key,1);
return rtn;
}
function hashtable_size(){
var size = 0;
for (var i in this.hashtable) {
if (this.hashtable[i] != null)
size ++;
}
return size;
}
function hashtable_toString(){
var result = '';
for (var i in this.hashtable)
{
if (this.hashtable[i] != null)
result += '{' + i + '},{' + this.hashtable[i] + '}\n';
}
return result;
}
function hashtable_values(){
var values = new Array();
for (var i in this.hashtable) {
if (this.hashtable[i] != null)
values.push(this.hashtable[i]);
}
return values;
}
Hastable類(lèi)使用方法:
//實(shí)例化一個(gè)自定義的哈希表類(lèi)
var hashTable = new Hashtable();
hashTable.put(0,'abc'); //0為key, 'abc'為value
hashTable.put(1,'123');
hashTable.put(2,'88a');
hashTable.put(3,'88a');
//遍歷hashtable, 相當(dāng)于c#和java中的foreach
for (var key in hashTable.keys()){ /* 用keys方法 */
alert(hashTable.get(key)); //按key遍歷value
}
//遍歷hashtable, 相當(dāng)于c#和java中的foreach
for (var key in hashTable.hashtable)){ /* 用hashtable屬性 */
alert(hashTable.get(key)); //按key遍歷value
}
alert(hashTable.containsKey(1)); //返回true
alert(hashTable.containsKey(4)); //因?yàn)椴淮嬖趉ey為4的,返回false
alert(hashTable.containsValue('888')); //返回true
alert(hashTable.containsValue('mobidogs')); //因?yàn)椴淮嬖趘alue為'mobidogs'的,返回false
hashTable.remove(1); //移除key為1的元素
alert(hashTable.containsKey(1)); //因?yàn)閗ey為1的元素已被上行的reomve()方法移除,所以返回false
//關(guān)于hastable的其它方法使用簡(jiǎn)單,讀者可以自己測(cè)試 (此略)
- js中哈希表的幾種用法總結(jié)
- javascript 哈希表(hashtable)的簡(jiǎn)單實(shí)現(xiàn)
- JavaScript中實(shí)現(xiàn)鍵值對(duì)應(yīng)的字典與哈希表結(jié)構(gòu)的示例
- js實(shí)現(xiàn)HashTable(哈希表)的實(shí)例分析
- javascript實(shí)現(xiàn)獲取字符串hash值
- 淺談js多維數(shù)組和hash數(shù)組定義和使用
- js數(shù)組去重的hash方法
- js模擬hashtable的簡(jiǎn)單實(shí)例
- js實(shí)現(xiàn)hashtable的賦值、取值、遍歷操作實(shí)例詳解
- JS模擬實(shí)現(xiàn)哈希表及應(yīng)用詳解
相關(guān)文章
微信小程序轉(zhuǎn)發(fā)事件實(shí)現(xiàn)解析
這篇文章主要介紹了微信小程序轉(zhuǎn)發(fā)事件實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10JavaScript實(shí)現(xiàn)基于Cookie的存儲(chǔ)類(lèi)實(shí)例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)基于Cookie的存儲(chǔ)類(lèi),實(shí)例分析了javascript通過(guò)cookie實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04JavaScript實(shí)現(xiàn)生成動(dòng)態(tài)表格和動(dòng)態(tài)效果的方法詳解
這篇文章主要介紹了如何通過(guò)JavaScript語(yǔ)言實(shí)現(xiàn)動(dòng)圖表格的生成以及動(dòng)態(tài)效果的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-02-02如何使用Bootstrap的modal組件自定義alert,confirm和modal對(duì)話(huà)框
本文我將為大家介紹Bootstrap中的彈出窗口組件Modal,此組件簡(jiǎn)單易用,效果大氣漂亮且很實(shí)用,感興趣的朋友一起學(xué)習(xí)吧2016-03-03javascript延時(shí)重復(fù)執(zhí)行函數(shù) lLoopRun.js
javascript延時(shí)重復(fù)執(zhí)行函數(shù) lLoopRun.js...2007-06-06獲取offsetTop和offsetLeft值的js代碼(兼容)
offsetTop和offsetLeft的值在某些特殊的情況下是會(huì)使用到的,為了實(shí)現(xiàn)值的準(zhǔn)確獲取,本文采用js代碼實(shí)現(xiàn)下,有需求的朋友可以參考下哈2013-04-04JavaScript探測(cè)CSS動(dòng)畫(huà)是否已經(jīng)完成的方法
這篇文章主要為大家詳細(xì)介紹了JavaScript探測(cè)CSS動(dòng)畫(huà)是否已經(jīng)完成的方法,感興趣的小伙伴們可以參考一下2016-08-08js手機(jī)號(hào)4位顯示空格,銀行卡每4位顯示空格效果
這篇文章主要介紹了js手機(jī)號(hào)4位顯示空格,銀行卡每4位顯示空格效果,手機(jī)號(hào)和銀行卡號(hào),按照每4位顯示一個(gè)空格的需求,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-03-03