js实现HashTable(哈希表)的实例分析

 更新时间:2016年11月21日 15:52:59   作者:逆心  
本文详细介绍javascript哈希表的实例分析及用法。下面就跟小编一起来学习下吧

一、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"));

 

以上是本文的全部内容,希望对大家有所帮助!

相关文章

  • js判断输入框不能为空格或null值的实现方法

    js判断输入框不能为空格或null值的实现方法

    下面小编就为大家分享一篇js判断输入框不能为空格或null值的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • js+css实现tab菜单切换效果的方法

    js+css实现tab菜单切换效果的方法

    这篇文章主要介绍了js+css实现tab菜单切换效果的方法,以实例形式完整讲述了css与js的实现代码,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • 解读函数的节流与防抖问题

    解读函数的节流与防抖问题

    这篇文章主要介绍了解读函数的节流与防抖问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • js实现的简单radio背景颜色选择器代码

    js实现的简单radio背景颜色选择器代码

    这篇文章主要介绍了js实现的简单radio背景颜色选择器代码,利用鼠标事件及页面元素动态操作实现页面背景颜色的改变功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • JavaScript中数据类型转换总结

    JavaScript中数据类型转换总结

    在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。本文将对此进行介绍,具有一定的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • 微信小程序获取手机号授权用户登录功能

    微信小程序获取手机号授权用户登录功能

    微信小程序中有许多地方需要用户注册用户信息的地方,用户需要填写手机号等,下面小编给大家分享微信小程序获取手机号授权用户登录功能,需要的朋友参考下吧
    2017-11-11
  • uniapp微信小程序授权登录并获取手机号的方法

    uniapp微信小程序授权登录并获取手机号的方法

    这篇文章主要给大家介绍了关于uniapp微信小程序授权登录并获取手机号的相关资料,我们在uniapp开发微信小程序的过程中,经常需要在微信端登录,需要的朋友可以参考下
    2023-06-06
  • window.onload绑定多个事件的两种解决方案

    window.onload绑定多个事件的两种解决方案

    这篇文章主要介绍了window.onload绑定多个事件的两种解决方案的相关资料,需要的朋友可以参考下
    2016-05-05
  • js实现适配不同的屏幕大小

    js实现适配不同的屏幕大小

    本文主要介绍了通过js适配不同的屏幕大小的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • 微信小程序基于canvas渐变实现的彩虹效果示例

    微信小程序基于canvas渐变实现的彩虹效果示例

    这篇文章主要介绍了微信小程序基于canvas渐变实现的彩虹效果,结合实例形式分析了微信小程序线性渐变及圆形渐变的相关实现技巧,需要的朋友可以参考下
    2019-05-05

最新评论