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 相关文章推荐
this和执行上下文实现代码
Jul 01 Javascript
原来Jquery.load的方法可以一直load下去
Mar 28 Javascript
jquery键盘事件使用介绍
Nov 01 Javascript
jQuery(非HTML5)可编辑表格实现代码
Dec 11 Javascript
jquery不常用方法汇总
Jul 26 Javascript
jQuery简单实现两级下拉菜单效果代码
Sep 15 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
Node调用Java的示例代码
Sep 20 Javascript
vue展示dicom文件医疗系统的实现代码
Aug 27 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
Nov 02 Javascript
微信小程序开发注意指南和优化实践(小结)
Jun 21 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上的memcache和memcached两个pecl库
2010/03/29 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
vue项目实战总结篇
2018/02/11 Javascript
vue实现文件上传功能
2018/08/13 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
Python中正则表达式的详细教程
2015/04/30 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
python中open函数的基本用法示例
2019/09/07 Python
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
竞争与合作演讲稿
2014/05/12 职场文书
服务承诺书怎么写
2014/05/24 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
党员带头倡议书
2015/04/29 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB