javascript hashtable實(shí)現(xiàn)代碼
更新時(shí)間:2009年10月13日 20:07:54 作者:
javascript中沒(méi)有像c#,java那樣的哈希表(hashtable), 然而,javascript中的Array也只有一些類似于'哈希表'的非常簡(jiǎn)單功能。
復(fù)制代碼 代碼如下:
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í)際要求,另外查詢遍歷也不方便,我們需要在Array的基礎(chǔ)上進(jìn)行擴(kuò)展,
下面我們可以用js中的數(shù)組來(lái)實(shí)現(xiàn)類似的hashtable的功能,
復(fù)制代碼 代碼如下:
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類使用方法:
復(fù)制代碼 代碼如下:
//實(shí)例化一個(gè)自定義的哈希表類
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)文章
JS 學(xué)習(xí)總結(jié)之正則表達(dá)式的懶惰性和貪婪性
這篇文章主要介紹了JS 學(xué)習(xí)總結(jié)之正則表達(dá)式的懶惰性和貪婪性的相關(guān)資料,需要的朋友可以參考下2017-07-07
JavaScritp添加url參數(shù)并將參數(shù)加入到url中及更改url參數(shù)的方法
這篇文章給大家介紹javascript添加url參數(shù)方法,將參數(shù)加入到url中,涉及到url添加參數(shù)的相關(guān)知識(shí),關(guān)于js添加url參數(shù)感興趣的朋友可以參考下本篇文章2015-10-10
js實(shí)現(xiàn)以最簡(jiǎn)單的方式將數(shù)組元素添加到對(duì)象中的方法
下面小編就為大家分享一篇js實(shí)現(xiàn)以最簡(jiǎn)單的方式將數(shù)組元素添加到對(duì)象中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
解析ScrollPic在ie8下只滾動(dòng)一遍,然后變?yōu)榭瞻?ie6,ie7,chrome,firefox正常
解析ScrollPic在ie8下只滾動(dòng)一遍,然后變?yōu)榭瞻?ie6,ie7,chrome,firefox都正常)2013-06-06
基于es6三點(diǎn)運(yùn)算符的使用方法(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇基于三點(diǎn)運(yùn)算符的使用方法(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
查找JS對(duì)象中是否包含某個(gè)變量的6種方法總結(jié)
在JavaScript中,我們可以通過(guò)多種方法來(lái)判斷一個(gè)數(shù)組中是否包含某個(gè)特定的值,這篇文章主要給大家介紹了關(guān)于如何查找JS對(duì)象中是否包含某個(gè)變量的6種方法,需要的朋友可以參考下2024-08-08

