javascript实现简单的Map示例介绍


Posted in Javascript onDecember 23, 2013
/* 
* 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 Map() { 
this.elements = new Array(); //获取MAP元素个数 
this.size = function() { 
return this.elements.length; 
}; 
//判断MAP是否为空 
this.isEmpty = function() { 
return (this.elements.length < 1); 
}; 
//删除MAP所有元素 
this.clear = function() { 
this.elements = new Array(); 
}; 
//向MAP中增加元素(key, value) 
this.put = function(_key, _value) { 
this.elements.push( { 
key : _key, 
value : _value 
}); 
}; 
//删除指定KEY的元素,成功返回True,失败返回False 
this.removeByKey = function(_key) { 
var bln = false; 
try { 
for (i = 0; i < this.elements.length; i++) { 
if (this.elements[i].key == _key) { 
this.elements.splice(i, 1); 
return true; 
} 
} 
} catch (e) { 
bln = false; 
} 
return bln; 
}; 
//删除指定VALUE的元素,成功返回True,失败返回False 
this.removeByValue = function(_value) {//removeByValueAndKey 
var bln = false; 
try { 
for (i = 0; i < this.elements.length; i++) { 
if (this.elements[i].value == _value) { 
this.elements.splice(i, 1); 
return true; 
} 
} 
} catch (e) { 
bln = false; 
} 
return bln; 
}; 
//删除指定VALUE的元素,成功返回True,失败返回False 
this.removeByValueAndKey = function(_key,_value) { 
var bln = false; 
try { 
for (i = 0; i < this.elements.length; i++) { 
if (this.elements[i].value == _value && this.elements[i].key == _key) { 
this.elements.splice(i, 1); 
return true; 
} 
} 
} catch (e) { 
bln = false; 
} 
return bln; 
}; 
//获取指定KEY的元素值VALUE,失败返回NULL 
this.get = function(_key) { 
try { 
for (i = 0; i < this.elements.length; i++) { 
if (this.elements[i].key == _key) { 
return this.elements[i].value; 
} 
} 
} catch (e) { 
return false; 
} 
return false; 
}; 
//获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL 
this.element = function(_index) { 
if (_index < 0 || _index >= this.elements.length) { 
return null; 
} 
return this.elements[_index]; 
}; 
//判断MAP中是否含有指定KEY的元素 
this.containsKey = function(_key) { 
var bln = false; 
try { 
for (i = 0; i < this.elements.length; i++) { 
if (this.elements[i].key == _key) { 
bln = true; 
} 
} 
} catch (e) { 
bln = false; 
} 
return bln; 
}; 
//判断MAP中是否含有指定VALUE的元素 
this.containsValue = function(_value) { 
var bln = false; 
try { 
for (i = 0; i < this.elements.length; i++) { 
if (this.elements[i].value == _value) { 
bln = true; 
} 
} 
} catch (e) { 
bln = false; 
} 
return bln; 
}; 
//判断MAP中是否含有指定VALUE的元素 
this.containsObj = function(_key,_value) { 
var bln = false; 
try { 
for (i = 0; i < this.elements.length; i++) { 
if (this.elements[i].value == _value && this.elements[i].key == _key) { 
bln = true; 
} 
} 
} catch (e) { 
bln = false; 
} 
return bln; 
}; 
//获取MAP中所有VALUE的数组(ARRAY) 
this.values = function() { 
var arr = new Array(); 
for (i = 0; i < this.elements.length; i++) { 
arr.push(this.elements[i].value); 
} 
return arr; 
}; 
//获取MAP中所有VALUE的数组(ARRAY) 
this.valuesByKey = function(_key) { 
var arr = new Array(); 
for (i = 0; i < this.elements.length; i++) { 
if (this.elements[i].key == _key) { 
arr.push(this.elements[i].value); 
} 
} 
return arr; 
}; 
//获取MAP中所有KEY的数组(ARRAY) 
this.keys = function() { 
var arr = new Array(); 
for (i = 0; i < this.elements.length; i++) { 
arr.push(this.elements[i].key); 
} 
return arr; 
}; 
//获取key通过value 
this.keysByValue = function(_value) { 
var arr = new Array(); 
for (i = 0; i < this.elements.length; i++) { 
if(_value == this.elements[i].value){ 
arr.push(this.elements[i].key); 
} 
} 
return arr; 
}; 
//获取MAP中所有KEY的数组(ARRAY) 
this.keysRemoveDuplicate = function() { 
var arr = new Array(); 
for (i = 0; i < this.elements.length; i++) { 
var flag = true; 
for(var j=0;j<arr.length;j++){ 
if(arr[j] == this.elements[i].key){ 
flag = false; 
break; 
} 
} 
if(flag){ 
arr.push(this.elements[i].key); 
} 
} 
return arr; 
}; 
}
Javascript 相关文章推荐
jQuery处理xml格式的返回数据(实例解析)
Nov 28 Javascript
js showModalDialog参数的使用详解
Jan 07 Javascript
jquery datatable后台封装数据示例代码
Aug 07 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
js实现屏幕自适应局部代码分享
Jan 30 Javascript
使用JS中的exec()方法构造正则表达式验证
Aug 01 Javascript
Bootstrap3 Grid system原理及应用详解
Sep 30 Javascript
Bootstrap如何创建表单
Oct 21 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
Dec 09 Javascript
JavaScript Window窗口对象属性和使用方法
Jan 19 Javascript
vue从零实现一个消息通知组件的方法详解
Mar 16 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 Vue.js
js购物车实现思路及代码(个人感觉不错)
Dec 23 #Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
Dec 23 #Javascript
js写的评论分页(还不错)
Dec 23 #Javascript
用js来刷新当前页面保留参数的具体实现
Dec 23 #Javascript
jquery插件jTimer(jquery定时器)使用方法
Dec 23 #Javascript
jquery实现图片翻页效果
Dec 23 #Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 #Javascript
You might like
模仿OSO的论坛(四)
2006/10/09 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
javascript date格式化示例
2013/09/25 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
python中map()与zip()操作方法
2016/02/27 Python
使用python3.5仿微软记事本notepad
2016/06/15 Python
python实现超市扫码仪计费
2018/05/30 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
django最快程序开发流程详解
2019/07/19 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
百思买美国官网:Best Buy
2016/07/28 全球购物
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
解决mysql的int型主键自增问题
2021/07/15 MySQL