javascript hashtable实现代码
javascript hashtable实现代码
发布时间:2016-12-30 来源:查字典编辑
摘要:复制代码代码如下:vararr=newArray();arr['item1']='thevalueofitem1';arr['item2']...

复制代码 代码如下:

var arr = new Array();

arr['item1'] = 'the value of item 1 ';

arr['item2'] = 'the value of item 2 ';

alert(arr['item1']);

alert(arr['item2']);

但上述功能,不符我们的实际要求,另外查询遍历也不方便,我们需要在Array的基础上进行扩展,

下面我们可以用js中的数组来实现类似的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类使用方法:

复制代码 代码如下:

//实例化一个自定义的哈希表类

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, 相当于c#和java中的foreach

for (var key in hashTable.keys()){ /* 用keys方法 */

alert(hashTable.get(key)); //按key遍历value

}

//遍历hashtable, 相当于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)); //因为不存在key为4的,返回false

alert(hashTable.containsValue('888')); //返回true

alert(hashTable.containsValue('mobidogs')); //因为不存在value为'mobidogs'的,返回false

hashTable.remove(1); //移除key为1的元素

alert(hashTable.containsKey(1)); //因为key为1的元素已被上行的reomve()方法移除,所以返回false

//关于hastable的其它方法使用简单,读者可以自己测试 (此略)

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类