javascript 实现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"));
javascript 实现HashTable(哈希表)的更多相关文章
- hashTable(哈希表)的基本用法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...
- Stack集合 Queue队列集合 Hashtable哈希表
Stack集合 干草堆集合 栈集合 栈;stack,先进后出,一个一个赋值,一个一个取值,安装顺序来. 属性和方法 实例化 初始化 Stack st = new Stack(); 添加元素 个数 Co ...
- 函数可以作为Javascript对象(哈希表)的键吗
一般Javascript书在讲解对象时,都指出Javascript中的对象可以作为哈希表,存储键值数据.通常情况下,键为字符串,如果键是数字的话,实际上在内部也会转换为字符串. 比如 var o = ...
- Hashtable(哈希表)
简体字繁体字转化: class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ; i < ...
- 检索 04 --Stack栈 Queue队列 Hashtable哈希表
//Stack 先进后出 没有索引 Stack st = new Stack(); st.Push(12); st.Push(11); st.Push(22); st.Push(34); st.Pus ...
- javascript 关于hashtable
javascript 实现HashTable(哈希表) 一.javascript哈希表简介 javascript里面是没有哈希表的,一直在java,C#中有时候用到了这一种数据结构,javascrip ...
- 集合>哈希表类Hashtable和SortedList排序列表类
集合>哈希表类Hashtable Hashtable一种键值对的集合 ,哈希表内部的排列是无序的,而且哈希表没有提供排序方法. 集合>哈希表类Hashtable>构造普通哈希表 代码 ...
- [PHP内核探索]PHP中的哈希表
在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...
- C#部分---特殊集合:stack栈集合、queue队列集合、哈希表集合。
1.stack栈集合:又名 干草堆集合 栈集合 特点:(1)一个一个赋值 一个一个取值(2)先进后出实例化 初始化 Stack st = new Stack(); //添加元素用push st.Pus ...
随机推荐
- 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
http://www.cyqdata.com/cnblogs/article-detail-35876#
- [CSS]置换和非置换元素
转自:http://blog.doyoe.com 先进一个题外话 在面试一个 重构(各大公司的叫法可能不太一样)时,我喜欢从一个点开始问,然后一直延展下去成为一条线,甚至是一个面,直到问到不会的地方, ...
- ADF_ADF Faces系列2_使用JSF开发基于Ajax的用户界面:ADF Faces富客户端组件简介(Part2)
2013-05-01 Created By BaoXinjian
- semanage: 未找到命令
[root@hn ~]# semanage port -l|grep ssh-bash: semanage: 未找到命令 yum -y install policycoreutils-python
- 使用Git命令从Github下载代码仓库
Github作为最大的开源代码仓库,也是作为版本控制工具,简直就是程序员的天堂,是一座挖掘不尽的宝藏.现在讲解一下如何把一个Github上的项目下载到本地,也就是在本地也建立一个项目仓库,以后进行项目 ...
- 学习MongoDB--(11):应用举例(利用java操作MongoDB)
原文地址:http://blog.csdn.net/drifterj/article/details/7948090 目录地址:http://blog.csdn.net/DrifterJ/articl ...
- jsp页面的使用
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...
- 20145305 《Java程序设计》第4周学习总结
教材学习内容总结 1.子类只能继承一个父类 2.检查多态语法逻辑是否正确,方式是从=号右边往左读:右边是不是一种左边(右边类型是不是左边类型的一种子类) 3.可以使用abstract标示该方法为抽象方 ...
- C++学习31 重载=(赋值运算符)
和普通变量一样,对象之间也可以相互赋值.赋值运算符“=”可以用来将一个对象拷贝给另一个已经存在的对象.对象之间的赋值是将成员变量依次拷贝,而不是将整个对象的内存按位拷贝. 对象之间的赋值: #incl ...
- struts2中action中的通配符
struts中一个正常的最普通不过的action是这样子的 <package name="default1" namespace="/gys" exten ...