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

 

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

相关文章

  • 小程序实现自定义导航栏适配完美版

    小程序实现自定义导航栏适配完美版

    这篇文章主要介绍了小程序实现自定义导航栏适配完美版,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 关于微信小程序获取小程序码并接受buffer流保存为图片的方法

    关于微信小程序获取小程序码并接受buffer流保存为图片的方法

    这篇文章主要介绍了关于微信小程序获取小程序码并接受buffer流保存为图片的方法,文中通过示例代码介绍的非常详细,对大家学习或者使用小程序具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧<BR>
    2019-06-06
  • javascript数据类型详解

    javascript数据类型详解

    本文介绍了对javascript数据类型;隐式转换 (+ 和 -,== 和 ===);包装对象等相关知识进行详细介绍,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 奇偶行高亮显示及鼠标划过高亮显示类

    奇偶行高亮显示及鼠标划过高亮显示类

    奇或偶数行高亮显示及鼠标莫过高亮显示,一个经常用到的效果,也能谷歌到大把的这种效果JS,但好像还没有一个封装成类直接用的.想象自己当初谷歌这个类时,还真没少折腾时间.
    2010-07-07
  • FileUpload上传图片(图片不变形)

    FileUpload上传图片(图片不变形)

    FileUpload上传图片(图片不变形) 的实现方法,需要的朋友可以参考下。
    2010-08-08
  • js完美的div拖拽实例代码

    js完美的div拖拽实例代码

    文章实现的div拖拽程序可以根据按钮来控制是要种拖拽方式与位置 ,下面希望有需要的朋友可参考
    2014-01-01
  • JS小游戏之象棋暗棋源码详解

    JS小游戏之象棋暗棋源码详解

    这篇文章主要介绍了JS小游戏之象棋暗棋源码详解,对游戏源码进行了较为详细的分析,并附带完整实例代码供大家学习参考,需要的朋友可以参考下
    2014-09-09
  • JS中进行字符串替换的方法

    JS中进行字符串替换的方法

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串,这篇文章主要介绍了js中进行字符串替换的方法,需要的朋友可以参考下
    2024-01-01
  • js实现文字头像的生成代码

    js实现文字头像的生成代码

    这篇文章主要介绍了js实现文字头像的生成的代码,代码简单易懂,非常不错,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • JS实现数组扁平化的方法分享

    JS实现数组扁平化的方法分享

    数组扁平化指的是:将一个多层嵌套的数组,处理成只有一层的数组。本文主要和大家介绍了几个常用的JS数组扁平化方法,希望对大家有所帮助
    2023-04-04

最新评论