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 02 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
Jul 04 Javascript
js中的布尔运算符使用介绍
Nov 20 Javascript
jquery+css3实现会动的小圆圈效果
Jan 27 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
Mar 07 Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 Javascript
JS监听滚动和id自动定位滚动
Dec 18 Javascript
面试题:react和vue的区别分析
Apr 08 Javascript
微信小程序定义和调用全局变量globalData的实现
Nov 01 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 Javascript
vue实现淘宝购物车功能
Apr 20 Javascript
JS实现超级好看的鼠标小尾巴特效
Dec 01 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
python将ip地址转换成整数的方法
2015/03/17 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
品牌宣传方案
2014/03/21 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
新员工考核评语
2014/12/31 职场文书
财务部岗位职责
2015/02/03 职场文书
市场总监岗位职责
2015/02/11 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL
Golang获取List列表元素的四种方式
2022/04/20 Golang