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 相关文章推荐
基于mootools插件实现遮罩层新手引导
May 24 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
动态的绑定事件addEventListener方法的使用
Jan 24 Javascript
ionic组件ion-tabs选项卡切换效果实例
Aug 27 Javascript
js原生跨域_用script标签的简单实现
Sep 24 Javascript
JS实现简单拖拽效果
Jun 21 Javascript
Bootstrap Table中的多选框删除功能
Jul 15 Javascript
原生JS实现获取及修改CSS样式的方法
Sep 04 Javascript
ES6知识点整理之Proxy的应用实例详解
Apr 16 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
JavaScript实现4位随机验证码的生成
Jan 28 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
基于php实现的验证码小程序
2016/12/13 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
Python中无限循环需要什么条件
2020/05/27 Python
python不同系统中打开方法
2020/06/23 Python
基于opencv实现简单画板功能
2020/08/02 Python
8种常用的Python工具
2020/08/05 Python
python里反向传播算法详解
2020/11/22 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
专科应届生求职信
2013/11/24 职场文书
给女朋友的道歉信
2014/01/10 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
优秀班组申报材料
2014/12/25 职场文书
六一儿童节开幕词
2015/01/29 职场文书
求职自荐信怎么写
2015/03/04 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers