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本身是一 ...
随机推荐
- python3+socket搭建简易服务器
踩了一上午的坑之后,终于对网络编程有了一点大致的.基本的了解.真的是0基础,之前对socket网络编程一点都不知道.(感觉自己与时代脱轨....) 首先我想对这些美妙的专业术语进行一番搜索: 服务器: ...
- 富文本编辑器TinyMCE
最近项目中用到了javascript富文本编辑器,从网上找开源控件,发现很多可选,参考下面文章,列出了很多可用的插件http://www.cnblogs.com/ywqu/archive/2009/1 ...
- np.tile 函数使用
>>> import numpy>>> numpy.tile([0,0],5)#在列方向上重复[0,0]5次,默认行1次array([0, 0, 0, 0, 0, ...
- easyui datagrid columns的field支持属性的子属性(field.sonfield形式或者格式化程序形式)
var col=$(_758).datagrid("getColumnOption",_75e);if(col){//var _75f=_75c[_75e];var _75f=un ...
- ZOJ 2760 - How Many Shortest Path - [spfa最短路][最大流建图]
人老了就比较懒,故意挑了到看起来很和蔼的题目做,然后套个spfa和dinic的模板WA了5发,人老了,可能不适合这种刺激的竞技运动了…… 题目链接:http://acm.zju.edu.cn/onli ...
- CVPixelBuffer
https://www.cnblogs.com/psklf/p/7700834.html https://stackoverflow.com/questions/16475737/convert-ui ...
- 火币Huobi API
本文介绍火币Huobi API REST API 简介 火币为用户提供了一套全新的API,可以帮用户快速接入火币PRO站及HADAX站的交易系统,实现程序化交易. 访问地址 适用站点 适用功能 适用交 ...
- C语言概述
打印摄氏度 /* 1.1 使用int类型进行计算 */ #include <stdio.h> /* print Fahrenheit-Celsius table for fahr = 0, ...
- MyEclipse如何安装egi插件及如何将github项目引入MyEclipse中
一.如何查看MyEclipse版本及Eclipse版本号 查看MyEclipse版本号:MyEclipse主界面的菜单栏的最左边“help”—>选择“About MyEclipse Enterp ...
- 洛谷P3244 落忆枫音 [HNOI2015] 拓扑排序+dp
正解:拓扑排序+dp 解题报告: 传送门 我好暴躁昂,,,怎么感觉HNOI每年总有那么几道题题面巨长啊,,,语文不好真是太心痛辣QAQ 所以还是要简述一下题意,,,就是说,本来是有一个DAG,然后后来 ...