JS hashMap实例详解


Posted in Javascript onMay 26, 2016

Hashmap是一种非常常用的、应用广泛的数据类型。本文通过实例代码给大家介绍js hashMap的相关知识,具体代码内容如下所示:

/**
* MAP对象,实现MAP功能 
* 
* 接口: 
* size() 获取MAP元素个数 
* isEmpty() 判断MAP是否为空 
* clear() 删除MAP所有元素 
* put(key, value) 向MAP中增加元素(key, value) 
* remove(key) 删除指定KEY的元素,成功返回True,失败返回False 
* get(key) 获取指定KEY的元素值VALUE,失败返回NULL 
* element(index) 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL 
* containsKey(key) 判断MAP中是否含有指定KEY的元素 
* containsValue(value) 判断MAP中是否含有指定VALUE的元素 
* values() 获取MAP中所有VALUE的数组(ARRAY) 
* keys() 获取MAP中所有KEY的数组(ARRAY) 
* 
* 例子: 
* var map = new Map(); 
* 
* map.put("key", "value"); 
* var val = map.get("key") 
* …… 
* 
*/
function hashmap() {
/**
* 存放数据
*/
this.data = new Object();
/**
* 放入一个键值对
* @param {String} key
* @param {Object} value
*/
this.put = function(key, value) 
{
this.data[key] = value;
};
/**
* 获取某键对应的值
* @param {String} key
* @return {Object} value
*/
this.get = function(key) 
{
return this.containsKey(key)?this.data[key]:null; 
};
/**
* 删除一个键值对
* @param {String} key
*/
this.remove = function(key) 
{
delete this.data[key];
};
/**
* 遍历Map,执行处理函数
* 
* @param {Function} 回调函数 function(key,value,index){..}
*/
this.each = function(fn){
if(typeof fn != 'function')
{
return;
}
var len = this.data.length;
for(var i=;i<len;i++)
{
var k = this.data[i];
fn(k,this.data[k],i);
}
};
/**
* 获取键值数组(类似Java的entrySet())
* @return 键值对象{key,value}的数组
*/
this.entrys = function() 
{
var len = this.data.length;
var entrys = new Array(len);
for (var i = ; i < len; i++) {
entrys[i] = {
key : i,
value : this.data[i]
};
}
return entrys;
};
/**
* 判断Map是否为空
*/
this.isEmpty = function() 
{
return this.data.length == ;
};
/**
* 获取键值对数量
*/
this.size = function()
{
return this.data.length;
};
/**
* 重写toString ,装成JSON格式
*/
this.toString = function()
{
var s = "[";
for(var i=;i<this.data.length;i++,s+=','){
var k = this.data[i];
s += "{'id':'" + k+"','value':'"+this.data[k]+"'}";
}
s=s.substring(, s.length-);
if(s!=""){
s+="]";
}
return s;
};
/**
* 输出Value的值
*/
this.values = function (){
var _values= new Array(); 
for(var key in this.data)
{ 
_values.push(this.data[key]); 
} 
return _values; 
};
/**
* 获取keys
*/
this.keySet = function (){
var _keys = new Array(); 
for(var key in this.data)
{ 
_keys.push(key); 
} 
return _keys; 
};
/**
* 判断MAP中是否含有指定KEY的元素 
*/
this.containsKey = function(_key)
{ 
return (_key in this.data); 
}; 
/** 
* 清空Map 
*/ 
this.clear = function(){ 
this.data.length = ;
this.data = new Object();
}; 
}

以上所述是小编给大家介绍的js hashMap实例详解的相关知识,希望对大家有所帮助!

Javascript 相关文章推荐
javascript 面向对象编程基础 多态
Aug 21 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
Angular.js实现注册系统的实例详解
Dec 18 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 Javascript
详解vue express启动数据服务
Jul 05 Javascript
ztree实现左边动态生成树右边为内容详情功能
Nov 03 Javascript
JsChart组件使用详解
Mar 04 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
Aug 25 Javascript
js限制输入框只能输入数字(onkeyup触发)
Sep 28 Javascript
JS使用Dijkstra算法求解最短路径
Jan 17 Javascript
详解JavaScript函数callee、call、apply的区别
Mar 08 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
Feb 27 Javascript
jQuery验证插件validate使用方法详解
Sep 13 #Javascript
动态加载js、css的实例代码
May 26 #Javascript
基于JS实现textarea中获取动态剩余字数的方法
May 25 #Javascript
js将json格式的对象拼接成复杂的url参数方法
May 25 #Javascript
使用jquery获取url以及jquery获取url参数的实现方法
May 25 #Javascript
jquery分隔Url的param方法(推荐)
May 25 #Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 #Javascript
You might like
Apache设置虚拟WEB
2006/10/09 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
重定向实现代码
2006/11/20 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
Vue实现一个图片懒加载插件
2019/03/11 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
Selenium定位元素操作示例
2018/08/10 Python
对python函数签名的方法详解
2019/01/22 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
如何基于Python批量下载音乐
2019/11/11 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技