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 插件学习(二)
Aug 06 Javascript
使用Ajax与服务器(JSON)通信实例
Nov 04 Javascript
Angular2学习笔记——详解路由器模型(Router)
Dec 02 Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 Javascript
JavaScript输入框字数实时统计更新
Jun 17 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
深入理解ES6中let和闭包
Feb 22 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
Apr 22 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
Feb 27 Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 Javascript
JS字符串补全方法padStart()和padEnd()
May 27 Javascript
vue使用video插件vue-video-player的示例
Oct 03 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中global和$GLOBALS[]的分析之一
2012/02/02 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
php获取excel文件数据
2017/04/21 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Grid得到选择行数据的方法总结
2011/01/17 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
Python操作串口的方法
2015/06/17 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
python实现黑客字幕雨效果
2018/06/21 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
QML实现钟表效果
2020/06/02 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
校园标语大全
2014/06/19 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS
Redis实现分布式锁的五种方法详解
2022/06/14 Redis
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技
JavaScript实现简单的音乐播放器
2022/08/14 Javascript