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 相关文章推荐
JavaScript的目的分析
Jan 05 Javascript
JavaScript 判断浏览器是否支持SVG的代码
Mar 21 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
jQuery滚动条插件nanoscroller使用指南
Apr 21 Javascript
javascript瀑布流式图片懒加载实例解析与优化
Feb 23 Javascript
jQuery处理XML文件的几种方法
Jun 14 Javascript
Bootstrap表格使用方法详解
Feb 17 Javascript
利用node.js实现反向代理的方法详解
Jul 24 Javascript
Vue实现active点击切换方法
Mar 16 Javascript
vue2.0+koa2+mongodb实现注册登录
Apr 10 Javascript
npm全局模块卸载及默认安装目录修改方法
May 15 Javascript
Node.js API详解之 readline模块用法详解
May 22 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 启动报错如何解决
2014/01/17 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
浅析Jquery操作select
2016/12/13 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
python里将list中元素依次向前移动一位
2014/09/12 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
学习和使用python的13个理由
2019/07/30 Python
python plotly画柱状图代码实例
2019/12/13 Python
python super函数使用方法详解
2020/02/14 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
德国网上药房:Apotal
2017/04/04 全球购物
采购部部长岗位职责
2014/02/06 职场文书
理发店策划方案
2014/06/05 职场文书