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异步回调的Promise模式封装实例
Jun 07 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
jquery实现定时自动轮播特效
Dec 10 Javascript
jquery根据一个值来选中select下的option实例代码
Aug 29 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
vue脚手架及vue-router基本使用
Apr 09 Javascript
过滤器vue.filters的使用方法实现
Sep 18 Javascript
Vue实现多标签选择器
Nov 28 Javascript
jstree中的checkbox默认选中和隐藏示例代码
Dec 29 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 jQuery
详解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
PHP常用的缓存技术汇总
2014/05/05 PHP
PHP中Session可能会引起并发问题
2015/06/26 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
python的依赖管理的实现
2019/05/14 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
Python如何实现邮件功能
2020/05/27 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
外贸销售员求职的自我评价
2013/11/23 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
七年级生物教学反思
2016/02/20 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
解决redis批量删除key值的问题
2022/03/23 Redis
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电