`
AngelAndAngel
  • 浏览: 234322 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一个js简单模拟Map结构

阅读更多
   一个js简易模拟Map结构,够用了。
     
<!--
	var Map=function(){
	    this.mapArr={};
		this.arrlength=0;

		//假如有重复key,则不存入
	    this.put=function(key,value){
		  if(!this.containsKey(key)){
		   this.mapArr[key]=value;
		   this.arrlength=this.arrlength+1;
		  }
		}
		this.get=function(key){
		  return this.mapArr[key];
		}

		//传入的参数必须为Map结构
		this.putAll=function(map){
           if(Map.isMap(map)){
		       var innermap=this;
		       map.each(function(key,value){
			      innermap.put(key,value);
			   })
		   }else{
		     alert("传入的非Map结构");
		   }
		}
		this.remove=function(key){
              delete this.mapArr[key];
		      this.arrlength=this.arrlength-1;
		}
		this.size=function(){
             return this.arrlength;
		}

		//判断是否包含key
		this.containsKey=function(key){
			  return (key in this.mapArr);
		}
		//判断是否包含value
        this.containsValue=function(value){
              for(var p in this.mapArr){
			     if(this.mapArr[p]==value){
				    return true;
				 }
			  }
			  return false;
		}
		//得到所有key 返回数组
		this.keys=function(){
		   var keysArr=[];
		   for(var p in this.mapArr){
		     keysArr[keysArr.length]=p;
		   }
		   return keysArr;
		}
		//得到所有value 返回数组
		this.values=function(){
		  var valuesArr=[];
		   for(var p in this.mapArr){
		     valuesArr[valuesArr.length]=this.mapArr[p];
		   }
		   return valuesArr;
		}
		
		this.isEmpty=function(){
		   if(this.size()==0){
		     return false;
		   }
		   return true;
		}
		this.clear=function(){
             this.mapArr={};
			 this.arrlength=0;
		}
		//循环
		this.each=function(callback){
	        for(var p in this.mapArr){
			 callback(p,this.mapArr[p]);
		   }

		}
        

	}
	//判断是否是map对象
	Map.isMap=function(map){
	  return  (map instanceof Map);
	}


	var map=new Map();
	map.put("afei",25);
	map.put("yaoming",31);
	map.put("pp",2);
	map.put("bill","55");
	map.remove("afei");

    var map2=new Map();
	map2.put("003",333);
	map2.put("004",444);
	map.putAll(map2);


    map.each(function(key,value){
	    alert(key+" : "+value);
	})


	
 //-->

     

   
分享到:
评论

相关推荐

    js模拟Map和StringBuilder

    js模拟Map和StringBuilder数据结构

    map的js实现

    这个简单的实现中,`Map`实例内部维护了一个数组`_data`,其中每个元素都是一个包含`key`和`value`的对象。`set`方法首先遍历数组,如果找到匹配的键,则更新对应的值;如果没有找到,就将新键值对添加到数组末尾。`...

    详解JavaScript中Hash Map映射结构的实现_.docx

    本文将深入探讨如何在JavaScript中实现一个简单的HashMap结构,并讨论与`Object`相关的陷阱。 首先,我们来看一个简单的HashMap实现: ```javascript var hashMap = { Set: function(key, value) { this[key] = ...

    js仿java的map对象

    在JavaScript中,我们可以创建一个自定义对象来模拟这个行为。例如: ```javascript function JavaScriptMap() { this.map = {}; } JavaScriptMap.prototype.set = function(key, value) { this.map[key] = ...

    在JavaScript中实现map对象

    虽然ES6引入了内置的`Map`构造函数,但在本文中,我们将通过模拟的方式,利用JavaScript中的数组来实现一个简易版的Map对象。 #### 二、设计思路 我们的目标是创建一个名为`Map`的构造函数,该函数具备以下方法: -...

    js遍历map javaScript遍历map的简单实现

    在这个例子中,`map`看起来像一个对象字面量,但实际上是使用了对象的特性来模拟Map的行为。实际上,JavaScript ES6引入的Map对象应该用`new Map()`来创建。如果使用`for...in`循环遍历这样的对象,它会遍历可枚举...

    classMap的使用

    在JavaScript编程中,`classMap`是一个特殊的数据结构,它通常用于存储类的元数据或者配置信息。在给定的代码示例中,我们看到一个名为`createMap`的函数,其中创建了一个新的`classMap`实例,并使用`setAt`方法设置...

    js操作map类UtilMap

    为了使习惯于Java开发的程序员在JS中也能便捷地操作映射数据结构,我们可以创建一个名为`UtilMap`的对象,模仿Java中的`Map`接口,提供相似的操作方法。现在,我们来详细探讨这个`UtilMap`实现的知识点。 首先,`...

    javascript模拟map输出与去除重复项的方法

    以下是一个简单的JavaScript模拟Map的示例: ```javascript function Map() { var obj = {}; // 存储键值对的私有对象 this.put = function(key, value) { obj[key] = value; // 将键值对添加到对象中 }; ...

    一个纯JS的8方向RPG游戏(模拟城市)webgame

    《一个纯JS的8方向RPG游戏(模拟城市)webgame》是一款基于JavaScript技术开发的网页游戏,它融合了角色扮演游戏(RPG)元素和模拟城市建设的策略成分,为玩家提供了一个独特的在线体验。这款游戏完全使用JavaScript...

    javaScript模拟的HashMap数据结构的对象

    javaScript模拟的HashMap数据结构,可以方便的put和get。几乎和Java中HashMap类的功能一模一样。非常好用的!

    服务器机柜模拟图平台源码 servermap

    总之,"ServerMap1.0.1"作为一个服务器机柜模拟图平台源码,它的价值在于提供了一种可视化的方式来管理和规划数据中心的物理布局,有助于提高运维效率,减少错误,同时为大规模的数据中心管理提供了强有力的支持。...

    JavaScript实现Java中Map容器的方法

    在给出的代码示例中,通过构造函数functionMap创建了一个“Map”对象,并为该对象定义了几个方法来模拟Map的行为,分别是put(增加键值对)、size(获取Map容器大小)、get(根据key获取value)、remove(根据key...

    js中模仿java的map使用

    在JavaScript中,可以通过定义一个构造函数`Map`来模拟Java中的`Map`行为。这个构造函数内部维护一个数组`elements`,用于存储键值对。 ```javascript function Map() { this.elements = []; // 存储键值对 } ``` ...

    JavaScript讲解数据结构和算法.zip

    4. **链表**:链表在JavaScript中通常通过自定义对象实现,每个节点包含数据和指向下一个节点的引用。 5. **树**:树数据结构包括二叉树、二叉搜索树等,可以使用对象和引用构建。JavaScript中没有内置的树结构,但...

    js中的数据结构操作.zip

    在这个"js中的数据结构操作.zip"压缩包中,可能包含了一些关于JavaScript中常见数据结构的示例、讲解或练习资源,如ljg_resource1。 JavaScript支持多种内置数据结构,包括数组、对象、链表、队列、栈、映射、集合...

    three.js-tilemap:Three.js Tilemap

    "Three.js Tilemap"是一个使用Three.js进行3D地图瓷砖渲染的实验项目。这种技术对于构建复杂的3D世界,如游戏地图、虚拟城市或地形模拟非常有用。 在Three.js中,Tilemap(地图瓷砖)的概念是将大地图分割成小块,...

    js代码-ES5实现map的方法

    在JavaScript的世界里,`Map`数据结构是一种非常重要的工具,它允许我们存储键值对,其中键可以是任何类型的数据,而不仅仅是字符串。在ES6中,`Map`被正式引入,提供了许多便利的功能,如迭代、计算键值对数量等。...

    JS算法 数据结构 精华集.zip

    2. **链表**:链表是一种线性数据结构,每个元素(节点)包含数据和指向下一个节点的引用。JavaScript中没有内置的链表实现,但可以通过构造函数模拟实现。链表的优势在于插入和删除操作的高效性,但在随机访问时...

Global site tag (gtag.js) - Google Analytics