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


Posted in Javascript onNovember 21, 2016

一、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 相关文章推荐
javascript Xml增删改查(IE下)操作实现代码
Jan 30 Javascript
网页和浏览器兼容性问题汇总(draft1)
Jun 01 Javascript
简短几句 通俗解释javascript的闭包
Jan 17 Javascript
判断在css加载完毕后执行后续代码示例
Sep 03 Javascript
用javascript将数据导入Excel示例代码
Sep 10 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
Mar 09 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
Dec 13 Javascript
浅谈JavaScript中的属性:如何遍历属性
Sep 14 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
Mar 01 Javascript
Vue-cli3简单使用(图文步骤)
Apr 30 Javascript
vue和小程序项目中使用iconfont的方法
May 19 Javascript
详解js中call与apply关键字的作用
Nov 21 #Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 #Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 #Javascript
全面解析node 表单的图片上传
Nov 21 #Javascript
利用fecha进行JS日期处理
Nov 21 #Javascript
Bootstrap Modal遮罩弹出层(完整版)
Nov 21 #Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 #Javascript
You might like
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
PHP中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python之指数与E记法的区别详解
2019/11/21 Python
python实现低通滤波器代码
2020/02/26 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
澳大利亚厨房和家用电器购物网站:Bing Lee
2021/01/11 全球购物
出纳岗位职责
2013/11/09 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
2015元旦节寄语
2014/12/08 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
工作检讨书怎么写
2015/01/23 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
Python读写yaml文件
2022/03/20 Python
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server