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 浏览器判断 绑定事件 arguments 转换数组 数组遍历
Jul 06 Javascript
JavaScript对象学习经验整理
Oct 12 Javascript
js中关于一个分号的崩溃示例
Nov 11 Javascript
利用浏览器全屏api实现js全屏
Jan 16 Javascript
JavaScript判断用户名和密码不能为空的实现代码
May 16 Javascript
jquery实现input框获取焦点的简单实例
Jan 26 Javascript
Vue实例中生命周期created和mounted的区别详解
Aug 25 Javascript
基于wordpress的ajax写法详解
Jan 02 Javascript
npm 下载指定版本的组件方法
May 17 Javascript
JS实现简易留言板增删功能
Feb 08 Javascript
JS数组及对象遍历方法代码汇总
Jun 16 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 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
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
大学生个人简历中的自我评价
2013/12/27 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
离职证明标准格式
2014/09/15 职场文书
高中校园广播稿
2014/10/21 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
Python函数中apply、map、applymap的区别
2021/11/27 Python