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事件串连执行多个处理过程的方法
Mar 09 Javascript
Javascript Tab 导航插件 (23个)
Jun 11 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
Apr 15 Javascript
jQuery插件编写步骤详解
Jun 03 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
Jul 11 Javascript
js+css3制作时钟特效
Oct 16 Javascript
Bootstrap CSS布局之表单
Dec 17 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
Jan 23 Javascript
在vue中使用Autoprefixed的方法
Jul 27 Javascript
vue下使用nginx刷新页面404的问题解决
Aug 02 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
Sep 02 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
Aug 20 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
PHP 事件机制(2)
2011/03/23 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
PHP多维数组排序array详解
2017/11/21 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python 计算文件的md5值实例
2017/01/13 Python
Python 实现链表实例代码
2017/04/07 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
使用OpCode绕过Python沙箱的方法详解
2019/09/03 Python
深入浅析python的第三方库pandas
2020/02/13 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
年会活动策划方案
2014/01/23 职场文书
新书吧创业计划书
2014/01/31 职场文书
老公保证书范文
2014/04/29 职场文书
总经理检讨书
2014/09/15 职场文书
病人慰问信范文
2015/02/15 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
JavaScript 数组去重详解
2021/09/15 Javascript