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 相关文章推荐
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
Aug 28 Javascript
jQuery常见开发技巧详细整理
Jan 02 Javascript
解析JavaScript中点号“.”的多义性
Dec 02 Javascript
js实现网页随机切换背景图片的方法
Nov 01 Javascript
jQuery中;function($,undefined) 前面的分号的用处
Dec 17 Javascript
JavaScript中数据结构与算法(一):栈
Jun 19 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
Sep 14 Javascript
浅谈JavaScript中的this指针和引用知识
Aug 05 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
Sep 23 jQuery
vue element 生成无线级左侧菜单的实现代码
Aug 21 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 Javascript
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
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
vue自定义指令directive实例详解
2018/01/17 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
2014年五四青年节活动方案
2014/03/29 职场文书
2014年度党员自我评议
2014/09/13 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
邀请函的格式
2015/01/30 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
python自动化测试之Selenium详解
2022/03/13 Python