js实现HashTable(哈希表)的实例分析

一、javascript哈希表简介

javascript里面是没有哈希表的,一直在java,C#中有时候用到了这一种数据结构,javascript里面若没有,感觉非常不顺手。细细看来,其实javascript的object的属性其实与哈希表非常类似。

如:

var person = {};
person["name"] = "关羽";

我们只需要在其基础上再封装一些HashTable的函数,就能够得到一个精简版的哈希表。

加入函数如下:

函数名 说明 返回值
add(key,value) 添加项
getValue(key) 根据key取值 object
remove(key) 根据key删除一项
containsKey(key) 是否包含某个key bool
containsValue(value) 是否包含某个值 bool
getValues() 获取所有的值的数组 array
getKeys() 获取所有的key的数组 array
getSize() 获取项总数 int
clear() 清空哈希表

二、代码实现

其具体的实现可以查看代码,都不算很复杂的东西。

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","关羽");
$("#div1").text(manHT.getValue("p1"));

以上是本文的全部内容,希望对大家有所帮助!

(0)

相关推荐

  • JAVASCRIPT HashTable

    function Hashtable() {     this._hash        = new Object();     this.add        = function(key,value){                         if(typeof(key)!="undefined"){                             if(this.contains(key)==false){                             

  • js模拟hashtable的简单实例

    复制代码 代码如下: function Hashtable()//自定义hashtable{    this._hash = new Object();    this.add = function(key, value) {        if (typeof (key) != "undefined") {            if (this.contains(key) == false) {                this._hash[key] = typeof (va

  • js 模拟实现类似c#下的hashtable的简单功能代码

    如果在c#中,我们只要用hashtable或者dictionary根据key取value的特性,就可以很轻松地实现这个功能了.其实我们稍作处理,js也可以实现类似hashtable的功能.下面总结一下笔者开发中用到的实现方式,贴代码为主. 1.实现思路:主要就是利用原型(prototype)的hasOwnProperty方法,确定对象中的项是该添加.移除还是取出某个匹配的项等.hasOwnProperty比遍历数组取值灵巧快速的地方在于:至少从代码上来看,它是O(1)复杂度的. 2.实现代码 复

  • javascript hashtable 修正版 下载

    修正hashtableobj.set("length","0") bug 可以设置key忽略大小写 可以clone hashtable对象 可以 使用obj.valueOf("key","defalutvalue") 设置默认值等等 欢迎修正bug 复制代码 代码如下: <html> <head> <script type="text/javascript"> // Au

  • js数组去重的hash方法

    对于 JavaScript 数组去除重复项,现在有多种方法,其中一种是hash,如下: if (!Array.prototype.unique) { Array.prototype.unique = function () { var hash = {}, result = [], item; for (var i = 0; i < this.length; i++) { item = this[i]; if ( !hash[item] ) { hash[item] = true; result

  • 浅谈js多维数组和hash数组定义和使用

    多维数组定义 定义数组数组对象用来在单独的变量名中存储一系列的值.使用关键词 new 来创建数组对象. 一维数组定义 var myArray=new Array('a','b','c'); 或 var myArray = []; 二维数组及多维数组定义 javascript二维数组或多维数组都是通过一维数组来模拟起来. 方法1. var arr= new Array(['a','b','c'],['d','e','f']); 方法2: var arr=new Array( new Array()

  • javascript hashtable实现代码

    复制代码 代码如下: 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的功能, 复制代码 代码如下: funct

  • javascript中实现兼容JAVA的hashCode算法代码分享

    在java中一个hashCode算法,可以用来计算一个字符串的hash值,今天一个朋友突然问俺能不能在js中计算hashCode,要求和java的hashCode计算结果一样. 对于java的hashCode,以前到现在也一直没有了解过其算法,不过猜想应该也不会太难,于是现在java中写了这段代码进行测试: 运行结果:899755 按下Ctrl键点击hashCode方法名跟进去看了下其算法,发现是很简单的几句代码,如下所示: 复制代码 代码如下: public int hashCode() {

  • javascript实现获取字符串hash值

    性能很高的计算字符串或文件hash值的函数,比md5速度快得多,自己一直用着,重复的几率为很底,一般的应用足够, var I64BIT_TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-'.split(''); function hash(input){ var hash = 5381; var i = input.length - 1; if(typeof input == 'string'){ f

  • javascript实现的HashMap类代码

    复制代码 代码如下: <script language = "javascript" > function HashMap() {     /**Map大小**/     var size = 0;     /**对象**/     var entry = new Object();     /**Map的存put方法**/     this.put = function(key, value) {         if (!this.containsKey(key)) {

  • javascript 哈希表(hashtable)的简单实现

    首先简单的介绍关于属性的一些方法: 属性的枚举: for/in循环是遍历对象属性的方法.如 复制代码 代码如下: var obj = { name : 'obj1', age : 20, height : '176cm' } var str = ''; for(var name in obj) { str += name + ':' + obj[name] + '\n'; } alert(str); 输出为:name:obj1 age:20 height:176cm 检查属性是否存在: in运算

  • js实现hashtable的赋值、取值、遍历操作实例详解

    本文实例讲述了js实现hashtable的赋值.取值.遍历操作.分享给大家供大家参考,具体如下: 哈希表(Hashtable)这个概率应该是#c里面的概念,用来赋值.取值.遍历.排序操作提高效率.想起这个东西其实使我们以前经常遇到这样的面试题,一个很大的数组可能有100000个,如何快速知道它里面的出现最多的次数,那么这里我们可能就要用Hashtable的相关知识了.Javascript中,object的实现就是hash表,因此只要在object上封装点方法,再利用原生的hasOwnProper

随机推荐