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中获取出错代码所在文件及行数的代码
Sep 23 Javascript
jquery操作对象数组元素方法详解
Nov 26 Javascript
跟我学习javascript的var预解析与函数声明提升
Nov 16 Javascript
极力推荐10个短小实用的JavaScript代码段
Aug 03 Javascript
jquery遍历标签中自定义的属性方法
Sep 17 Javascript
jQuery实现级联下拉框实战(5)
Feb 08 Javascript
Javascript 实现匿名递归的实例代码
May 25 Javascript
vue中的scope使用详解
Oct 29 Javascript
vuex 的简单使用
Mar 22 Javascript
使用javascript做时间倒数读秒功能的实例
Jan 23 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
vue backtop组件的实现完整代码
Apr 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
js四舍五入数学函数round使用实例
2014/05/09 Javascript
js中this的用法实例分析
2015/01/10 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
python实现代理服务功能实例
2013/11/15 Python
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
Python fileinput模块使用实例
2015/05/28 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
django模板语法学习之include示例详解
2017/12/17 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
PyTorch搭建多项式回归模型(三)
2019/05/22 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
如何唤起类中的一个方法
2013/11/29 面试题
党员年终民主评议的自我评价
2013/11/05 职场文书
大学军训通讯稿
2014/01/13 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
实例讲解Python中sys.argv[]的用法
2021/06/03 Python