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 相关文章推荐
基于jquery的让页面控件不可用的实现代码
Apr 27 Javascript
新手常遇到的一些jquery问题整理
Aug 16 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
Mar 25 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
Feb 04 Javascript
告诉你什么是javascript的回调函数
Sep 04 Javascript
js中对函数设置默认参数值的3种方法
Oct 23 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
Nov 24 Javascript
微信小程序 实例开发总结
Apr 26 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
Mar 09 Javascript
20个最常见的jQuery面试问题及答案
May 23 jQuery
jquery分页插件pagination使用教程
Oct 23 jQuery
在vue中使用G2图表的示例代码
Mar 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
相对路径转化成绝对路径
2007/04/10 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
python处理json数据中的中文
2014/03/06 Python
python编程羊车门问题代码示例
2017/10/25 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
java程序员面试交流
2012/11/29 面试题
最新大学生创业计划书写作攻略
2014/04/02 职场文书
学风建设演讲稿
2014/09/12 职场文书
大学生学习计划书
2014/09/15 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
毕业班工作总结
2015/08/10 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript
Python 中的 copy()和deepcopy()
2021/11/07 Python
人民币符号
2022/02/17 杂记
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python