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数组的扩展实现代码集合
Jun 01 Javascript
javascript显示用户停留时间的简单实例
Aug 05 Javascript
jQuery实现密保互斥问题解决方案
Aug 16 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
Jan 19 Javascript
JS组件Bootstrap实现图片轮播效果
May 16 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
Feb 19 Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 Javascript
jquery分页优化操作实例分析
Aug 23 jQuery
关于vue路由缓存清除在main.js中的设置
Nov 06 Javascript
用js编写留言板
Mar 17 Javascript
详解javascript void(0)
Jul 13 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
Oct 17 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实现jQuery扩展函数
2009/10/30 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
vue 权限认证token的实现方法
2018/07/17 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
HR喜欢的自荐信格式
2013/10/08 职场文书
大学专科自荐信
2014/06/17 职场文书
企业挂职心得体会
2014/09/10 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
奖励通知
2015/04/22 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书