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

最新评论