ES6之前模拟Map数据结构的写法
在ES6之前JavaScript 里面本身没有map对象,但是用JavaScript的Array、Object来模拟实现Map的数据结构。
现在已经有Map对象了,这里记录一下之前的写法
Array方法
/*
* 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.remove = 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;
} //获取指定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 null;
}
} //获取指定索引的元素(使用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) {
varbln = 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的数组(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中所有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;
}
} var map = new Map(); map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3"); //var val = map.get("key1");
// var val = map.containsKey("key1");
// var val = map.element(2).value; var arr=map.keys();
for(var i=0;i<arr.length;i++){
alert(map.get(arr[i]));
}
// alert(val);
Object方法
<script type=text/javascript charset=utf-8>
/***************模拟java里的map集合***************/
function Map(){
var obj = {};//空对象,存放键值对 //put方法,存值
this.put = function(key,value){
obj[key] = value;
} //size方法,返回大小
this.size = function(){
var count = 0;
for(var att in obj){
count++;
}
return count;
} //get方法,根据key获得value
this.get = function(key){
if(obj[key] || obj[key] === 0 || obj[key] === false){
return obj[key];
}else{
return null;
}
} //删除方法,根据key删除
this.remove = function(key){
if (obj[key] || obj[key] === 0 || obj[key] === false) {
delete obj[key];
}
} //遍历map
this.each = function(fn){
for(var att in obj){
fn(att,obj[att]);
}
}
} var m = new Map();
m.put('001','BeiJing');
m.put('002','ShangHai');
//document.write(m.size());
//m.remove('001');
//alert(m.get('001'));
m.each(function(key,value){
alert(key + ':' + value);
}); </script>
ES6之前模拟Map数据结构的写法的更多相关文章
- js ES6 Set和Map数据结构详解
这篇文章主要介绍了ES6学习笔记之Set和Map数据结构,结合实例形式详细分析了ECMAScript中基本数据结构Set和Map的常用属性与方法的功能.用法及相关注意事项,需要的朋友可以参考下 本 ...
- es6 Set 和Map 数据结构
ES6提供了新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个数据结构,用来生成Set 数据结构. const s = new Set(); [2,3,5,4 ...
- es6入门7--Set Map数据结构
本文作为ES6入门第十三章的学习整理笔记,可能会包含少部分个人的理解推测,若想阅读更详细的介绍,还请阅读原文ES6入门 一.set数据结构 1.set不接受重复值 ES6新增了Set构造函数用于创建s ...
- ES6 set和map数据结构对对象数组去重简单实现
自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [. ...
- ES6 之 Set数据结构和Map数据结构 Iterator和for...of循环
ECMAScript 6 入门 Set数据结构 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. va ...
- es6学习笔记-set和map数据结构
ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3 ...
- ES6的新特性(12)——Set 和 Map 数据结构
Set 和 Map 数据结构 Set 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. co ...
- es6的Set和Map数据结构
Set 和 Map 数据结构 Set WeakSet Map WeakMap Set § ⇧ 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set ...
- ES6中的Set与Map数据结构
本文实例讲述了ES6学习笔记之Set和Map数据结构.分享给大家供大家参考,具体如下: 一.Set ES6提供了新的数据结构Set.类似于数组,只不过其成员值都是唯一的,没有重复的值. Set本身是一 ...
随机推荐
- mysql数据库恢复
数据库恢复注意事项: # 数据恢复和字符集关联很大,如果字符集不正确会导致恢复的数据乱码. #MySQL命令和source命令恢复数据库的原理就是把文件的SQL语句,在数据库重新执行的过程. 1.利用 ...
- MapReduce计算之——hadoop中的Hello World
1. 启动集群 2. 创建input路径(有关hadoop 的命令用 "hadoop fs"),input路径并不能在系统中查找到,可以使用 “hadoop fs -ls /” ...
- hadoop命令运行,去除:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform 警告
参照:Hadoop之—— WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... 修 ...
- CNN中的池化层的理解和实例
池化操作是利用一个矩阵窗口在输入张量上进行扫描,并且每个窗口中的值通过取最大.取平均或其它的一些操作来减少元素个数.池化窗口由ksize来指定,根据strides的长度来决定移动步长.如果stride ...
- DS作业·写了一个链表
用struct手写了个list 有push_back,push_front,insert,erase reserve,size,setpos,rbegin 功能. 坑:一开始想用template< ...
- Hive之import和export使用详解
在hive-0.8.0后引入了import/export命令. Export命令可以导出一张表或分区的数据和元数据信息到一个输出位置,并且导出数据可以被移动到另一个hadoop集群或hive实例,并且 ...
- Oracle HA 之 测试RAC的功能
作用:在oracle数据库instance级别的冗余,其中只要有一个instance可用即可保证可用性,但是不能保准数据级别的错误. 数据库文件需要放置在共享存储上,理论上一个实例对应一个数据库,实例 ...
- array string mysql IN LIKE
$ids = $_POST['ids']; $str = implode(',',$ids); $str = '('.$str.')'; $db_region->region_del($str) ...
- is_link
'Symbolic Link' to File1 content containing path to File1'Hard Link' to File1 content containing Fi ...
- flask中的url_for
转自:https://blog.csdn.net/dengfan666/article/details/78320188 1.URL反转:根据视图函数名称得到当前所指向的url 2.url_for() ...