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操纵Cookie实现购物车程序
Nov 23 Javascript
密码框显示提示文字jquery示例
Aug 29 Javascript
JS分页效果示例
Oct 11 Javascript
js获取select选中的option的text示例代码
Dec 19 Javascript
JavaScript省市区三级联动菜单效果
Sep 21 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 Javascript
JS中常用的正则表达式
Sep 29 Javascript
JS实现遍历不规则多维数组的方法
Mar 21 Javascript
js实现二级菜单点击显示当前内容效果
Apr 28 Javascript
JavaScript this绑定过程深入详解
Dec 07 Javascript
vuex存储token示例
Nov 11 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
php微信支付之APP支付方法
2015/03/04 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
Python中的startswith和endswith函数使用实例
2014/08/25 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
学生会干部自荐信
2014/02/04 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
cf战队收人口号
2014/06/21 职场文书
大学生交通专业求职信
2014/09/01 职场文书
机关作风建设自查报告
2014/10/22 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
技术支持岗位职责
2015/02/13 职场文书
开除通知书范本
2015/04/25 职场文书
电力培训学习心得体会
2016/01/11 职场文书
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android