js实现hashtable的赋值、取值、遍历操作实例详解
发布时间 - 2026-01-10 22:05:35 点击率:次本文实例讲述了js实现hashtable的赋值、取值、遍历操作。分享给大家供大家参考,具体如下:

哈希表(Hashtable)这个概率应该是#c里面的概念,用来赋值、取值、遍历、排序操作提高效率。想起这个东西其实使我们以前经常遇到这样的面试题,一个很大的数组可能有100000个,如何快速知道它里面的出现最多的次数,那么这里我们可能就要用Hashtable的相关知识了。Javascript中,object的实现就是hash表,因此只要在object上封装点方法,再利用原生的hasOwnProperty方法就可以实现简单高效的hashtable。
一、什么是哈希表(Hashtable)
二、哈希表的简单操作
三、js模拟哈希表的简单操作
一、什么是哈希表(Hashtable)
Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对。
二、哈希表的简单操作C#
在哈希表中添加一个key/value键值对:
HashtableObject.Add(key,value);
在哈希表中去除某个key/value键值对:
HashtableObject.Remove(key);
从哈希表中移除所有元素:
HashtableObject.Clear();
判断哈希表是否包含特定键key:
HashtableObject.Contains(key);
三、js模拟哈希表的简单操作
HashTable.prototype = {
contructor:HashTable,
//初始化
initialize:function(){
this.obj = {};
},
//获取hashTable中对象唯一出现的次数
count:function(){
var count = 0;
for(var i in this.content) count++;
return count;
},
//返回hashTable中的值
items:function(key){
if(this.contains(key)){
return this.obj[key];
}
},
//增加值到hashtable
add:function(key,value){
if(this.obj.hasOwnProperty(key)){
return false;
}else{
this.obj[key] = value;
return true;
}
},
//清空hashtable中的值
clear:function(){
this.obj = {};
},
//检测hashTable对象中是否含有此属性
contains:function(key){
return this.obj.hasOwnProperty(key);
},
//移除hashTable中对象的值
remove:function(key){
delete this.obj[key];
}
}
这样我们就能像c#语言里面的那样进行操作了。
还一个简单的变体版:
// js哈希表
function HashTable() {
this.ObjArr = {};
this.Count = 0;
//添加
this.Add = function(key, value) {
if (this.ObjArr.hasOwnProperty(key)) {
return false; //如果键已经存在,不添加
}else {
this.ObjArr[key] = value;
this.Count++;
return true;
}
}
//是否包含某项
this.Contains = function(key) {
return this.ObjArr.hasOwnProperty(key);
}
//取某一项 其实等价于this.ObjArr[key]
this.GetValue = function(key){
if (this.Contains(key)) {
return this.ObjArr[key];
}else {
throw Error("Hashtable not cotains the key: " + String(key)); //脚本错误
//return;
}
}
//移除
this.Remove = function(key) {
if (this.Contains(key)) {
delete this.ObjArr[key];
this.Count--;
}
}
//清空
this.Clear = function(){
this.ObjArr = {}; this.Count = 0;
}
}
//员工
function employee(id, userName) {
this.id = id;
this.userName = userName;
}
function test() {
var ht = new HashTable();
var tmpEmployee = null;
for (var i = 1; i < 6; i++) {
tmpEmployee = new employee(i, "Employee_" + i);
ht.Add(i, tmpEmployee);
}
for (var i = 1; i <= ht.Count; i++) {
alert(ht.GetValue(i).userName); //其实等价于ht.ObjArr[i].userName
//alert(ht.ObjArr[i].userName);
}
ht.Remove(1);
alert(ht.Contains(1)); //false
alert(ht.Contains(2)); //true
//alert(ht.GetValue(1)); //异常
var result = ht.GetValue(2);
if (result != null) {
alert("Employee Id:" + result.id + ";UserName:" + result.userName);
}
ht.Add(2, "这一个key已经存在!"); //Add无效
//ht.Clear(); //清空
alert(ht.Count);
}
最后解决一下,开头说的那个问题
Array.prototype.maxNum = function(){
var arr = this,obj={};
for(var i =0, len=arr.length;i<len;i++){
var key = arr[i];
if( ! obj[key]){
obj[key] = 1;
}else{
obj[key]++;
}
}
var max = -1,maxStr;
for( key in obj){
if(obj[key]>max){
max = obj[key];
maxStr = key;
}
}
//alert(maxStr);
return [maxStr,max];
}
PS:这里再为大家提供几款hash操作相关工具供大家参考使用:
在线散列/哈希算法加密工具:
http://tools./password/hash_encrypt
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools./password/hash_md5_sha
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# js
# hashtable
# 赋值
# 取值
# 遍历
# js中哈希表的几种用法总结
# javascript 哈希表(hashtable)的简单实现
# JavaScript中实现键值对应的字典与哈希表结构的示例
# js实现HashTable(哈希表)的实例分析
# javascript实现获取字符串hash值
# 浅谈js多维数组和hash数组定义和使用
# javascript hashtable实现代码
# js数组去重的hash方法
# js模拟hashtable的简单实例
# JS模拟实现哈希表及应用详解
# 键值
# 移除
# 清空
# 加密工具
# 这一
# 相关内容
# 最多
# 均为
# 感兴趣
# 数据结构
# 作了
# 给大家
# 要用
# 能有
# 使我
# 更多关于
# 所述
# 几款
# 程序设计
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
js代码实现下拉菜单【推荐】
Laravel怎么实现模型属性的自动加密
EditPlus中的正则表达式 实战(4)
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
如何快速建站并高效导出源代码?
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
EditPlus中的正则表达式 实战(1)
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
如何用虚拟主机快速搭建网站?详细步骤解析
网站制作软件有哪些,制图软件有哪些?
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
高防服务器租用首荐平台,企业级优惠套餐快速部署
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
lovemo网页版地址 lovemo官网手机登录
Laravel如何为API编写文档_Laravel API文档生成与维护方法
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
如何有效防御Web建站篡改攻击?
Python文本处理实践_日志清洗解析【指导】
原生JS实现图片轮播切换效果
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何在自有机房高效搭建专业网站?
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
智能起名网站制作软件有哪些,制作logo的软件?
Laravel Session怎么存储_Laravel Session驱动配置详解
如何用景安虚拟主机手机版绑定域名建站?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
昵图网官方站入口 昵图网素材图库官网入口
Laravel如何保护应用免受CSRF攻击?(原理和示例)
iOS正则表达式验证手机号、邮箱、身份证号等
高端智能建站公司优选:品牌定制与SEO优化一站式服务
海南网站制作公司有哪些,海口网是哪家的?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
如何在阿里云域名上完成建站全流程?
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
油猴 教程,油猴搜脚本为什么会网页无法显示?
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
JS碰撞运动实现方法详解
如何在七牛云存储上搭建网站并设置自定义域名?
历史网站制作软件,华为如何找回被删除的网站?

