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 相关文章推荐
js 走马灯简单实例
Nov 21 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
Mar 27 Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
Oct 26 Javascript
jquery div模态窗口的简单实例
May 28 Javascript
js实时获取窗口大小变化的实例代码
Nov 18 Javascript
原生js实现查询天气小应用
Dec 09 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
Mar 15 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
Dec 07 Javascript
vue 下列表侧滑操作实例代码详解
Jul 24 Javascript
create-react-app 修改为多入口编译的方法
Aug 01 Javascript
解决Layui 表单提交数据为空的问题
Aug 15 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 MYSQL 数据备份类
2009/06/19 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
php无限级分类实现方法分析
2016/10/19 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
Vue实现简单分页器
2018/12/29 Javascript
Python的动态重新封装的教程
2015/04/11 Python
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
python利用微信公众号实现报警功能
2018/06/10 Python
python将视频转换为全字符视频
2019/04/26 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
行政工作个人的自我评价
2014/02/13 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
十八大宣传标语
2014/10/09 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
百家讲坛观后感
2015/06/12 职场文书
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js