javascript hashtable

Js hashTable(哈希表) JS版的哈希表,仿C#版,但有些功能更好用 立即下载

点击打开链接


javascript中没有像c#,java那样的哈希表(hashtable)的实现。在js中,object属性的实现就是hash表,因此只要在object上封装点方法,简单的使用obejct管理属性的方法就可以实现简单高效的hashtable。

首先简单的介绍关于属性的一些方法:

属性的枚举:

for/in循环是遍历对象属性的方法。如

 

 1  var  obj  =  {
 2      name :  ' obj1 ' ,
 3      age :  20 ,
 4      height :  ' 176cm '
 5  }
 6          
 7  var  str  =   '' ;
 8  for ( var  name  in  obj)
 9  {
10      str  +=  name  +   ' : '   +  obj[name]  +   ' \n ' ;
11  }
12  alert(str);

 

输出为:name:obj1

  age:20

  height:176cm

 

检查属性是否存在:

in运算符可以用来测试一个属性是否存在。

this .containsKey  =   function  ( key )
{
    
return  (key  in  entry);
}

 

 

删除属性

使用delete运算符来删除一个对象的属性。使用delete删除的属性,for/in将不会枚举该属性,并且in运算符也不会检测到该属性。

1  delete  entry[key];
2  delete  obj.name;

 


下面是哈希表(hashtable)的js的实现方法:

 1  function  HashTable()
 2  {
 3       var  size  =   0 ;
 4       var  entry  =   new  Object();
 5 
 6       this .add  =   function  (key , value)
 7      {
 8           if ( ! this .containsKey(key))
 9          {
10              size  ++  ;
11          }
12          entry[key]  =  value;
13      }
14 
15       this .getValue  =   function  (key)
16      {
17           return   this .containsKey(key)  ?  entry[key] :  null ;
18      }
19 
20       this .remove  =   function  ( key )
21      {
22           if (  this .containsKey(key)  &&  (  delete  entry[key] ) )
23          {
24              size  -- ;
25          }
26      }
27 
28       this .containsKey  =   function  ( key )
29      {
30           return  (key  in  entry);
31      }
32 
33       this .containsValue  =   function  ( value )
34      {
35           for ( var  prop  in  entry)
36          {
37               if (entry[prop]  ==  value)
38              {
39                   return   true ;
40              }
41          }
42           return   false ;
43      }
44 
45       this .getValues  =   function  ()
46      {
47           var  values  =   new  Array();
48           for ( var  prop  in  entry)
49          {
50              values.push(entry[prop]);
51          }
52           return  values;
53      }
54 
55       this .getKeys  =   function  ()
56      {
57           var  keys  =   new  Array();
58           for ( var  prop  in  entry)
59          {
60              keys.push(prop);
61          }
62           return  keys;
63      }
64 
65       this .getSize  =   function  ()
66      {
67           return  size;
68      }
69 
70       this .clear  =   function  ()
71      {
72          size  =   0 ;
73          entry  =   new  Object();
74      }
75  }

 

测试:

代码
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head >
    
< title > HashTable </ title >
    
< script  type ="text/javascript"  src ="/js/jquery.js" ></ script >
    
< script  type ="text/javascript"  src ="/js/HashTable.js" ></ script >
    
< script  type ="text/javascript" >
    
function  MyObject(name)
    {
        
this .name  =  name;
        
this .toString  =   function (){
            
return   this .name;
        }
    }
    
    $(
function (){
        
var  map  =   new  HashTable();
        map.add(
" A " , " 1 " );
        map.add(
" B " , " 2 " );
        map.add(
" A " , " 5 " );
        map.add(
" C " , " 3 " );
        map.add(
" A " , " 4 " );
        
        
var  arrayKey  =   new  Array( " 1 " , " 2 " , " 3 " , " 4 " );
        
var  arrayValue  =   new  Array( " A " , " B " , " C " , " D " );
        map.add(arrayKey,arrayValue);
        
var  value  =  map.getValue(arrayKey);
        
        
var  object1  =   new  MyObject( " 小4 " );
        
var  object2  =   new  MyObject( " 小5 " );

        map.add(object1,
" 小4 " );
        map.add(object2,
" 小5 " );

        $(
' #console ' ).html(map.getKeys().join( ' | ' )  +   ' <br> ' );
    })
    
    
</ script >
</ head >
< body >
    
< div  id ="console" ></ div >
</ body >
</ html >

 


如何打开本地网络的防火墙端口(Windows版)解决ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。问题 ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。 最开始在遇到这个报错的时候十分不解,后来经过思考,有可能是服务器端口占用,或者并没有放行。因此搜查问题的关键是要先去排查问题。 在搜索栏输入控制面板 选择防火墙 选择开关 保证这些选项是开着的 选择高级设置 新建规则 创建协议端口 选择端口 允许连接 点击下一步 创建规则后点击下一步(后命名) 选择任意端口ALL即可 问题排查完毕!socket创建网络通信时,有读者 阅读详情

相关推荐

LPDDR5/5X BG mode,8B mode和16B mode

LPDDR5/5X 器件,协议上支持多个bank架构可静态配置;配置在MR3:模式说明协议要求速率要求BLBG模式每CH 4BG, 4BALPDDR5/5X>3200MbpsBL16 & 328B模式每CH 8BALPDDR5任何速率BL3216B模式每CH 16BALPDDR5/5X<=3200MbpsBL16 & 32。

hemlok的博客 8864

【数据结构与算法】JavaScript实现哈希表

哈希表通常是基于数组哈希表可以提供非常快速的插入-删除-查找操作;无论多少数据,插入和删除值都只需要非常短的时间,即O(1)的时间级。实际上,只需要几个机器指令即可完成;哈希表的速度比树还要快,基本可以瞬间查找到想要的元素。但是相对于树来说编码要简单得多。哈希表同样存在不足之处哈希表中的数据是没有顺序的,所以不能以一种固定的方式(比如从小到大 )来遍历其中的元素。通常情况下,哈希表中的key是不允许重复的,不能放置相同的key,用于保存不同的元素。哈希表是什么?

一个前端开发者 1495

3A之自动对焦(AF)算法:从Tenegrad到拉普拉斯的清晰度评价实战

本文深入解析自动对焦(AF)算法的核心——清晰度评价函数,通过实战对比Tenegrad、方差、能量梯度、Brenner和拉普拉斯五大经典算法的原理、代码实现与性能。文章详细阐述了各函数在计算速度、抗噪性和单峰性上的优劣,并提供了从仿真测试到硬件部署的优化策略,帮助开发者根据实际场景选择最合适的AF算法。

weixin_29281915的博客 313

哈希表(JavaScript实现)

哈希表一、什么是哈希表 一、什么是哈希表 哈希表是一种非常重要的数据结构,几乎所有的编程语言都有直接或者间接的应用这种数据结构,它通常是基于数组实现的,当时相对于数组,它有更多的优势: 它可以提供非常快速的插入-删除-查找操作。 哈希表的速度比数还要快,基本可以瞬间查找到想要的元素 哈希表相对于数来说编码要容易的多。 但是哈希表相对于数组也有一些不足: 哈希表中的数组是没有顺序的,所以不能以一种固定的方式(比如从小到大)来遍历其中的元素。 通常情况下,哈希表中的key是不允许重复的,不能放置相同的ke

m0_48375854的博客 2811

【硬件自锁开关】用两个D触发器完成实用的自锁开关电路

性价比是做电子设计的人要考虑的事,在学会了用单片机解决大多数问题的时候,是否你也想过用简单的手段解决一个多数场合要解决的问题呢?按一下,输出状态由关闭变成开启,再按一下开启变成关闭。机械弹簧式的开关可以实现自锁的功能:钩子和弹簧将当前状态“储存”起来,这个能量为下一次触发的提供状态“翻转”的动力;在电子设计中,经常通过单片机的程序指令实现自锁:通过寄存器将当前电平状态暂存起来,下一次触发的时候寄存器内容“取反”,再将其输出到端口。可否用电路实现以上过程呢?完全可以,方案很简单,通过两个D触发器即可实现。

qq_33175704的博客 4261

电机控制::软件架构::微型软件架构

所谓软件架构就是软件分层:HAL库,嵌入式操作系统,中间件,应用层。大型项目可参考借鉴ROS/PX4/Apollo/FMT等无人机、机器人、无人驾驶等开源项目;电机控制大型为AUTOSAR架构,小型跑裸机参考 前后台系统 或 微型实时操作系统对模块管理的思想。基本原理还是参照大型项目的架构来的,只是大部分层与块都相对简单,也没有操作系统这一层。硬件架构了解不同芯片组合及其各自的特点。1.FPGA+;2.架构;3.TC387+AUTOSAR架构,车规级,汽车领域常用。

one__leaf的博客 1695

【JS】数据结构之哈希表

哈希表通常是基于数组实现的,哈希表是对于索引的一种转换,这种转换称之为哈希函数,通过哈希函数就会把要存储的值映射到一个位置,这个位置就是他的索引。在web架构中,后端程序直接与数据库打交道,会出现频繁操作数据库情况,所有会出现性能瓶颈,于是就出现了缓存层。那有没有一种方法,可以直接将 name 值作为索引,来提高我们的查询速度,那么我们就要将 name 转换成数组的索引。这种转换是一种压缩映射,映射表达是一一对应的关系,也就是说,散列值的空间通常会小于输入的空间。,该输出的值就是散列值。

qq_45677671的博客 1267

【算法】—前缀和与差分详解

前缀和指一个数组的某下标之前的所有数组元素的和(即数列的前n项求和),前缀和是一种重要的预处理,能够降低算法的时间复杂度,可以快速地求出某一段的和,对于处理区间之间的问题是往往十分高效相比较其他算法而言,前缀和更像是一种解题的技巧,一种优化方式输入一个长度为 n 的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r 对于每个询问,输出原序列中从第 l 个数到第 r 个数的和5 32 1 3 6 41 21 32 4123453610。

DAY I 的成长之路 6022

哈希表(hashtable)的javascript简单实现

javascript中没有像c#,java那样的哈希表(hashtable)的实现。在js中,object属性的实现就是hash表,因此只要在object上封装点方法,简单的使用obejct管理属性的方法就可以实现简单高效的hashtable。 首先简单的介绍关于属性的一些方法: 属性的枚举: for/in循环是遍历对象属性的方法。如    1 var obj = { 2     n...

weixin_34077371的博客 149

手把手教你用Arduino搭建惠斯通电桥:从原理到代码实现(附完整电路图)

本文详细介绍了如何利用Arduino搭建惠斯通电桥,从硬件选型、电路设计到代码实现和校准技巧,提供完整的电路图和实用代码示例。特别适合电子爱好者和创客学习高精度电阻测量技术,并扩展应用于应变片测量和温度监测等实际项目。

o4p5q6r7s的博客 401

高效数据迁移:ICCAP到ADS的数据导入与导出实战指南

本文提供了从ICCAP到ADS进行高效、准确数据迁移的实战指南。针对射频与微波电路设计中的关键挑战,详细阐述了迁移前的战略规划、ICCAP数据的精细化导出(包括脚本化批处理)、ADS数据的多种导入方法(如Data Items、DML模型库及编程化API),并强调了数据完整性与准确性验证的重要性,确保模型参数和仿真结果在平台间可靠传递。

weixin_29291185的博客 132

js中Hashtable问题

js中没有自带的Hashtable,需要我们自己定义,我们系统的自定义Hashtable放在common里面 

ZhlIsJacky的专栏 721

【网络安全 | 渗透工具】Hydra安装使用详细教程

Hydra,也称九头蛇,是一款非常强大的暴力破解工具(密码能否被破解关键在于字典是否足够强大),支持多种服务协议的账号和密码进行爆破,包括Web登录、数据库、SSH、FTP等服务,支持Linux、Windows、Mac平台安装。该工具支持以下协议的爆破:Hydra在kali中自带,这里介绍windows下的安装方法。zip下载地址:https://gitcode.com/maaaaz/thc-hydra-windows/tree/master下载完成后解压: 再将thc-hydra-windows-mast

等风来 9200

JS HashTable

"http://www.w3.org/TR/html4/loose.dtd">JS HashTablefunction Hashtable(){ this._hash = new Object(); this.add = function(key,value){  if(typeof(key)!="undefined"){   if(this.contains(key)==false){    t

colincrazy的专栏 2045

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JavaScript之HashTable

HashTable(哈希表)是一种根据键值对(key-value)来直接访问的集合类型的数据结构。 哈希表的查找效率非常高,因为它可以直接通过key来访问。 而数组是通过遍历下标来进行查找的。 通常javascript中的对象可以动态添加或者删除属性,故可以把对象看做是一个集合, javascript的对象就是天生的HashTable。 构造HashTable对象,如下: v...

aclwajw600722的博客 134

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【JavaScript】在JS中使用哈希表(hashTable)

 因JavaScript中允许任意对象作为下标,使的Object可以有任意的key做为属性。下面的列子中展示如何在JS中很方便的使用哈希表  "-//W3C//DTD HTML 4.0 Transitional//EN">       New Document    "text/javascript">       var hashTable = n

lonelycoder的Java科研站 1087

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

javascript HashTable 散列表 (分离链接法) HashMap

* Collection/LinkedList.js /** * Created by Mch on 8/26/18. */ function Node(e) { this.element = e; this.next = null; } function LinkedList() { this.length = 0; this.head = null; ...

fareast_mzh的博客 636

Javascript实现HashTable(哈希表)

ES6特性(详细可看阮一峰) Set 对象类似于数组,且成员的值都是唯一的。 Map 对象是键值对集合,和 JSON 对象类似,但是 key 不仅可以是字符串还可以是对象 其中Map中的键名也可以是对象这个特性极大的方便了开发,但是在ES6之前是没有办法的,只能模拟,但是很麻烦。 但是可以模拟一个hashTable来方便开发,其实javascript的object的属性其实与哈希表非常

wangshengfei 1961

js写的Hashtable类

&lt;script language="javascript" type="text/javascript"&gt;function Hashtable(){    this._hash        = new Object();    this.add        = function(key,value){                        if(typeof(key...

weixin_33829657的博客 85

JavaScript之HashTable[转]

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;ch...

weixin_30900589的博客 87

Javascript 实现Hashtable

//javascript Hashtable 实现var Hashtable=function()...{    this.Clear();}Hashtable.prototype=...{    Add:    function(key,value)...{    //实现Add 方法                if(!key) return;                if(typ

578

javascript 实现 Hashtable ArrayList StringBuffer

Hashtable ArrayList 并不是javascript 固有的类,但是我们可以模拟一个 下面的code用起来会是这样 : [code="javascript"] var table = new HashTable(); table.put(jsObjKey,jsObjValue); var arrayList = new ArrayList(); arrayList....

CC的专栏 185

JavaScript实现的HashTable(键值对)类

引言 在后端语言中存在HashTable数据结构,他可以以一种key/value的形式保存数据,同时也可以通过key快速获取value的值。这是一种很便捷也很常用的功能。原生JS中同样也没有实现HashTable的数据类型(注意是类型,并不是结构),有与它类似的数据结构——Object,JS的Object其实本质上就是一种key/valu...

weixin_34025051的博客 318

javascript中的哈希表(hashtable)实现

javascript中的hashtable实现javascript中没有像c#,java那样的哈希表(hashtable), 然而,javascript中的Array也只有一些类似于哈希表的非常简单功能, 如下: var arr = new Array(); arr[item1] = the value of item 1 ; arr[item2] = the value of 

Mobidogs Blog 1万+

利用hasOwnProperty实现的高效的javascript hashtable

javascript中,object的实现就是hash表,因此只要在object上封装点方法,再利用原生的hasOwnProperty方法就可以实现简单高效的hashtableCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->va

High_Mount的专栏 1976
上一篇: javascript hash
下一篇: js刷新;window.location.reload;窗口刷新
Qicz
博客等级 码龄16年 56粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值