一、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"));

javascript 实现HashTable(哈希表)的更多相关文章

  1. hashTable(哈希表)的基本用法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  2. Stack集合 Queue队列集合 Hashtable哈希表

    Stack集合 干草堆集合 栈集合 栈;stack,先进后出,一个一个赋值,一个一个取值,安装顺序来. 属性和方法 实例化 初始化 Stack st = new Stack(); 添加元素 个数 Co ...

  3. 函数可以作为Javascript对象(哈希表)的键吗

    一般Javascript书在讲解对象时,都指出Javascript中的对象可以作为哈希表,存储键值数据.通常情况下,键为字符串,如果键是数字的话,实际上在内部也会转换为字符串. 比如 var o = ...

  4. Hashtable(哈希表)

    简体字繁体字转化: class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ; i < ...

  5. 检索 04 --Stack栈 Queue队列 Hashtable哈希表

    //Stack 先进后出 没有索引 Stack st = new Stack(); st.Push(12); st.Push(11); st.Push(22); st.Push(34); st.Pus ...

  6. javascript 关于hashtable

    javascript 实现HashTable(哈希表) 一.javascript哈希表简介 javascript里面是没有哈希表的,一直在java,C#中有时候用到了这一种数据结构,javascrip ...

  7. 集合&gt;哈希表类Hashtable和SortedList排序列表类

    集合>哈希表类Hashtable Hashtable一种键值对的集合 ,哈希表内部的排列是无序的,而且哈希表没有提供排序方法. 集合>哈希表类Hashtable>构造普通哈希表 代码 ...

  8. [PHP内核探索]PHP中的哈希表

    在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...

  9. C#部分---特殊集合:stack栈集合、queue队列集合、哈希表集合。

    1.stack栈集合:又名 干草堆集合 栈集合 特点:(1)一个一个赋值 一个一个取值(2)先进后出实例化 初始化 Stack st = new Stack(); //添加元素用push st.Pus ...

随机推荐

  1. 理解MVC模式

    理解一般意义上的MVC模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分: 模型(Model):模型用于封装与应用程序的业务逻 ...

  2. 转码:unescape("%u7B80%u4F53%u4E2D%u6587")--->escape("简体中文")

    unescape("%u7B80%u4F53%u4E2D%u6587")"简体中文"escape("简体中文") "%u7B80% ...

  3. Web上传文件

      客户端      相对于FTP文件上传,Web文件上传速度慢一些,但使用方便,不需要客户端,而且权限比FTP容易控制. Web文件上传采用POST方式,上传文件需要设置FORM的entype属性为 ...

  4. NSString类的相关用法

    一.NSString字符串连接NSString* string; // 结果字符串 NSString* string1, string2; //已存在的字符串 1. string = [NSStrin ...

  5. BIP_开发案例06_以RB.RDF为数据源BIP.RTF为模板的简单例子(案例)

    2014-05-31 Created By BaoXinjian

  6. CF577B Modulo Sum 好题

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  7. php判断用户客户端是否是微信内置客户端

    微信内置浏览器的渲染方式在某些方面和其他浏览器不同,所以有时候需要做一些兼容性处理,那么就需要判断是否是微信内置浏览器.最好的判断方式就是通过 User Agent 来判断. 工具/原料   php ...

  8. nfs不能自动mount(转载)

    From:http://www.wenzizone.com/2009/08/14/nfs_can_not_automount_supplementary.html 手动挂载nfs没有问题,说明port ...

  9. java生成验证码图片

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...

  10. 在VMware虚拟机中配置DOS汇编开发环境!!

    操作系统:win7 32位 DOS环境:DosBox  下载:http://www.dosbox.com/ 选择当前适合自己版本,下载就可以了. 汇编编译器:MASM 5.0 下载:http://do ...