`
vefan
  • 浏览: 85583 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Javascript实现的Map

阅读更多

自己用Javascript写了一个Map,没有别人写的好,不过也要贴出来,作为学习参考!

			function Map()
			{
				this.Entry = function(key,value){
					this.key=key;
					this.value=value;
				};
				this.EntrySet = new Array();
				
				this.constraint = function(key){
					if(null==key || undefined==key ||"undefined"==typeof(key) || ""==key)
					{
						return false;
					}
					return true;
				};
				
				this.entry = function (key){
					if(!this.constraint(key))return;
					
					for(var i=0; i<this.EntrySet.length; i++)
					{
						var entry = this.EntrySet[i];
						if(entry.key==key) {
							return entry;
						};
					}
					return;
				};
				
				this.put=function(key,value){
					if(!this.constraint(key))return;
				    var entry = this.entry(key);
					if(entry)
					{
						entry.value = value;
					}else
					{
						this.EntrySet.push(new this.Entry(key,value));					
					}
				};
				
				this.get=function(key){
					var entry = this.entry(key);
					if(entry)
					{
						return entry.value;
					}
					return;
				};
				
			}//end of map define

    下面把人家写的HashMap也贴出来,供参考学习!

/**
* HashMap构造函数
*/
function HashMap()
{
   this.length = 0;
   this.prefix = "hashmap_prefix_20040716_";
}
/**
* 向HashMap中添加键值对
*/
HashMap.prototype.put = function (key, value)
{
 if(!this[this.prefix+key]){
    this[this.prefix + key] = value;
    this.length ++;
 }
}
/**
* 从HashMap中获取value值
*/
HashMap.prototype.get = function(key)
{
   return typeof this[this.prefix + key] == "undefined"
           ? null : this[this.prefix + key];
}
/**
* 从HashMap中获取所有key的集合,以数组形式返回
*/
HashMap.prototype.keySet = function()
{
   var arrKeySet = new Array();
   var index = 0;
   for(var strKey in this)
   {
       if(strKey.substring(0,this.prefix.length) == this.prefix)
           arrKeySet[index ++] = strKey.substring(this.prefix.length);
   }
   return arrKeySet.length == 0 ? null : arrKeySet;
}
/**
* 从HashMap中获取value的集合,以数组形式返回
*/
HashMap.prototype.values = function()
{
   var arrValues = new Array();
   var index = 0;
   for(var strKey in this)
   {	 
       if(strKey.substring(0,this.prefix.length) == this.prefix)
       {
    	
           arrValues[index ++] = this[strKey];
       }
   }
  
   return arrValues.length == 0 ? null : arrValues;
}
/**
* 获取HashMap的value值数量
*/
HashMap.prototype.size = function()
{	
   return this.length;
}
/**
* 删除指定的值
*/
HashMap.prototype.remove = function(key)
{
   delete this[this.prefix + key];
   this.length --;
}
/**
* 清空HashMap
*/
HashMap.prototype.clear = function()
{
   for(var strKey in this)
   {
       if(strKey.substring(0,this.prefix.length) == this.prefix)
           delete this[strKey];  
   }
   this.length = 0;
}
/**
* 判断HashMap是否为空
*/
HashMap.prototype.isEmpty = function()
{
   return this.length == 0;
}
/**
* 判断HashMap是否存在某个key
*/
HashMap.prototype.containsKey = function(key)
{
   for(var strKey in this)
   {
      if(strKey == this.prefix + key)
         return true; 
   }
   return false;
}
/**
* 判断HashMap是否存在某个value
*/
HashMap.prototype.containsValue = function(value)
{
   for(var strKey in this)
   {
      if(this[strKey] == value)
         return true; 
   }
   return false;
}
/**
* 把一个HashMap的值加入到另一个HashMap中,参数必须是HashMap
*/
HashMap.prototype.putAll = function(map)
{
   if(map == null)
       return;
   if(map.constructor != HashMap)
       return;
   var arrKey = map.keySet();
   var arrValue = map.values();
   for(var i in arrKey)
      this.put(arrKey[i],arrValue[i]);
}
//toString
HashMap.prototype.toString = function()
{
   var str = "";
   for(var strKey in this)
   {
       if(strKey.substring(0,this.prefix.length) == this.prefix)
             str += strKey.substring(this.prefix.length)
                 + " : " + this[strKey] + "\r\n";
   }
   return str;
}

 

 

分享到:
评论

相关推荐

    javascript实现map功能极其方便

    javascript实现map,极其方便,可在需要当前页处理多数据时使用

    用javaScript实现的map,经过测试,很好用

    本文将深入探讨如何使用JavaScript实现Map,以及它的特性和优势。 首先,创建一个Map对象非常简单,可以通过调用Map构造函数并传入可迭代对象(如数组)来初始化: ```javascript let map = new Map([[1, 'one'], ...

    JavaScript实现Array(数组)和Map

    在JavaScript中,Array和Map是两种非常重要的数据结构,它们各有各的特点和应用场景。这篇文章将深入探讨这两个概念,以及如何在实际开发中使用它们。 首先,Array是JavaScript中最基础的数据结构之一,它允许我们...

    javascript 实现map集合

    本文主要分享了如何使用JavaScript实现类似Map的数据结构。在JavaScript中,虽然ES6标准已经包含了一个Map的实现,但是在早期版本中,并没有直接提供Map对象。因此,开发者们经常需要自己实现这样的数据结构。文章...

    javascript的Map实现(高性能)

    在本文中,我们将深入探讨一种高性能的JavaScript `Map`实现,它基于JSON,具有出色的稳定性和更高的容量。 首先,我们来看传统的JavaScript `Map`。原生的`Map`提供了如`set`、`get`、`delete`、`has`等方法,便于...

    gmap.rar_GMAP_javascript_map_map javascript_map offline

    在描述中,“高人把google map的javascript全部下载下来 可以实现大部分功能 离线使用GOOGLEMAP”,说明了这是一个高手编写的程序,他或她已经将Google Maps的JavaScript库进行了本地化处理,使得开发者可以在没有...

    在JavaScript中实现map对象

    ### 在JavaScript中实现Map对象 #### 一、引言 在JavaScript中,原生支持了多种数据结构,其中数组(Array)是最为常见的数据结构之一。然而,在某些应用场景下,我们可能需要一种能够根据键(key)快速查找值(value)的...

    JavaScript 实现Array(数组)和Map

    在JavaScript编程中,Array和Map是两种非常重要的数据结构,它们各自有其独特的作用和应用场景。Array主要用于存储一组有序的元素,而Map则提供了一种键值对的存储方式,适用于关联不同类型的值。 Array(数组)是...

    利用js实现Map

    本文将深入探讨`Map`对象的原理、特性以及如何通过JavaScript实现`Map`的相关功能,并通过实例进行演示。 ### 1. Map的基本用法 创建一个`Map`对象非常简单,可以通过传入一个数组的数组来初始化,每个内部数组...

    JavaScript中利用Array和Object实现Map的方法

    主要介绍了JavaScript中利用Array和Object实现Map的方法,实例分析了javascript实现map的添加、获取、移除、清空、遍历等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    javascript 中Map的使用

    3. Map的深拷贝:利用Map可以实现对象的深拷贝,通过递归将对象的所有属性转换为键值对存入Map,然后根据Map再构建新对象。 在实际开发中,Map常用于: - 保存索引映射关系,比如数组元素与其索引的对应。 - 维护多...

    js 实现map的方式

    JavaScript中的Map对象是一种数据结构,它允许我们存储键值对,并且键可以是任何类型,而不仅仅是字符串。Map对象在JavaScript ES6版本中被引入,为处理复杂的数据关联提供了更强大的工具,尤其对于那些需要使用非...

    javascript Map对象 原型 插件

    javascript Map原型,对象,实现javascript中的Map数据类型功能

    基于Javascript实现的3D GIS,支持谷歌地图+必应地图+OpenStreetMap+搜索地图+天地图+源码+界面展示

    基于Javascript实现的3D GIS,支持谷歌地图+必应地图+OpenStreetMap+搜索地图+天地图+源码+界面展示,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于...

    javascript模拟map,set类,用起来挺方便的!!!

    1.可以用null,boolean,string,number,array,Date,自定义类的对象作键值,数组里的元素必须是实现equals方法的类型,而且数组里含有null,undefined,NaN会弹出异常; 2.数组维数尽量不要太多,程序里递归检查数组元素...

    js实现map用法

    JavaScript中的Map对象是ES6引入的一种新的数据结构,它提供了键值对的存储方式,与对象类似但有显著区别。Map的主要优势在于键可以是任意类型,而不仅仅是字符串,这使得它在处理复杂数据结构时非常有用。在本文中...

    map-example.zip_html5_javascript_map

    在本项目中,“map-example.zip_html5_javascript_map”是一个包含使用HTML5和JavaScript实现的网页动态地图的压缩包。这个项目旨在展示如何利用这两种技术创建交互式地图应用,为用户提供丰富的地理信息可视化体验...

    Javascript 中类似Map集合的实现键值对

    **自定义实现Map的思路** 1. **数据结构**:首先,我们需要一个数据结构来存储键值对,可以使用数组或对象。数组可以按照特定格式(如[key, value])存储,而对象则需要处理键的唯一性。 2. **size属性**:维护一...

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

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

Global site tag (gtag.js) - Google Analytics