`
kylixs
  • 浏览: 66017 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

一个简单的JavaScript Map

阅读更多

用js写了一个Map,带遍历功能,请大家点评下啦。

//map.js

Array.prototype.remove = function(s) {
	for (var i = 0; i < this.length; i++) {
		if (s == this[i])
			this.splice(i, 1);
	}
}

/**
 * Simple Map
 * 
 * 
 * var m = new Map();
 * m.put('key','value');
 * ...
 * var s = "";
 * m.each(function(key,value,index){
 * 		s += index+":"+ key+"="+value+"\n";
 * });
 * alert(s);
 * 
 * @author dewitt
 * @date 2008-05-24
 */
function Map() {
	/** 存放键的数组(遍历用到) */
	this.keys = new Array();
	/** 存放数据 */
	this.data = new Object();
	
	/**
	 * 放入一个键值对
	 * @param {String} key
	 * @param {Object} value
	 */
	this.put = function(key, value) {
		if(this.data[key] == null){
			this.keys.push(key);
		}
		this.data[key] = value;
	};
	
	/**
	 * 获取某键对应的值
	 * @param {String} key
	 * @return {Object} value
	 */
	this.get = function(key) {
		return this.data[key];
	};
	
	/**
	 * 删除一个键值对
	 * @param {String} key
	 */
	this.remove = function(key) {
		this.keys.remove(key);
		this.data[key] = null;
	};
	
	/**
	 * 遍历Map,执行处理函数
	 * 
	 * @param {Function} 回调函数 function(key,value,index){..}
	 */
	this.each = function(fn){
		if(typeof fn != 'function'){
			return;
		}
		var len = this.keys.length;
		for(var i=0;i<len;i++){
			var k = this.keys[i];
			fn(k,this.data[k],i);
		}
	};
	
	/**
	 * 获取键值数组(类似Java的entrySet())
	 * @return 键值对象{key,value}的数组
	 */
	this.entrys = function() {
		var len = this.keys.length;
		var entrys = new Array(len);
		for (var i = 0; i < len; i++) {
			entrys[i] = {
				key : this.keys[i],
				value : this.data[i]
			};
		}
		return entrys;
	};
	
	/**
	 * 判断Map是否为空
	 */
	this.isEmpty = function() {
		return this.keys.length == 0;
	};
	
	/**
	 * 获取键值对数量
	 */
	this.size = function(){
		return this.keys.length;
	};
	
	/**
	 * 重写toString 
	 */
	this.toString = function(){
		var s = "{";
		for(var i=0;i<this.keys.length;i++,s+=','){
			var k = this.keys[i];
			s += k+"="+this.data[k];
		}
		s+="}";
		return s;
	};
}


function testMap(){
	var m = new Map();
	m.put('key1','Comtop');
	m.put('key2','南方电网');
	m.put('key3','景新花园');
	alert("init:"+m);
	
	m.put('key1','康拓普');
	alert("set key1:"+m);
	
	m.remove("key2");
	alert("remove key2: "+m);
	
	var s ="";
	m.each(function(key,value,index){
		s += index+":"+ key+"="+value+"\n";
	});
	alert(s);
}

 //testMap.htm

<html>
<head>
<title>Test Map</title>
<script language="javascript" src="map.js">
</script>
</head>
<body>
<input type="button" value="test" onclick="testMap()">
</body>
</html>

 

  • map.rar (1.2 KB)
  • 描述: javascript map source & testcase
  • 下载次数: 1160
分享到:
评论
1 楼 myy 2008-05-25  
var map = {};

map["key1"] = "Value1"; // 加入值对
map["key2"] = "Value2";
map["key3"] = "Value3";
...

if("key1" in map) { //判断是否存在
  alert("OK");
}

for(var k in map) { // 遍历
  alert(k + " = " + map[k]);
}
...

delete map["key1"]; // 删除

相关推荐

    JavaScript实现Array(数组)和Map

    如果需要保持元素的顺序并且键总是数字,那么Array是一个好选择。但如果键可以是任意值,并且需要高效地查找或删除键值对,那么Map更为合适。熟练掌握这两种数据结构的用法,能帮助我们编写更高效、更易维护的...

    javascript Map对象 原型 插件

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

    gmap.rar_GMAP_javascript_map_map javascript_map offline

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

    自定义javascript的Map类

    自定义javascript的Map类,使用习惯完全依据于java的map使用习惯编写,java中map的用法基本一样,导入包即可使用

    javascript map类

    javascript map类。类中有相应demo,在javascript中实现Map的一个类,包括map中对应的一些数据结构相关算法。

    javascript 中Map的使用

    - 使用数组的解构赋值,每个数组元素是一个包含两个元素的数组,分别代表键和值,如`let map = new Map([['key1', 'value1'], ['key2', 'value2']]);` 2. 存取数据: - `set(key, value)`:设置键值对。 - `get...

    利用js实现Map

    下面是一个简单的`Map`实现示例: ```javascript class SimpleMap { constructor() { this.store = []; } set(key, value) { let pair = this.findPair(key); if (pair) { pair.value = value; } else { ...

    javascript(map功能)

    * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * ...

    在JavaScript中实现map对象

    通过上述实现,我们成功地利用JavaScript中的数组模拟了一个简单的Map对象。这种方式不仅加深了我们对Map这种数据结构的理解,同时也提供了一种灵活的方式来处理键值对数据。虽然ES6已经提供了内置的`Map`构造函数,...

    JavaScript 实现Array(数组)和Map

    在`map.js`文件中,可能会有对Map的实现或扩展,比如添加一个`forEach`方法遍历Map的所有键值对,或者一个`size`属性获取Map中的元素数量。 `object.js`文件可能包含与Object相关的辅助函数,比如深拷贝、属性检查...

    js模拟list和map

    javascript 模拟 java中的 List,Map js文件为 js/utils.js IE6.0 测试通过 &lt;br&gt;List: add(var obj) //添加一个元素 remove(var index) //删除一个元素 get(var index) //获取一个元素 remove...

    javascript的Map实现(高性能)

    在JavaScript中,`Map`是一种内置的数据结构,用于存储键值对。相比于对象,`Map`的优势在于它可以使用任何类型的值作为键,包括对象。在本文中,我们将深入探讨一种高性能的JavaScript `Map`实现,它基于JSON,具有...

    谷歌MAP_V3中文详解以及一个简单例子

    本教程将对谷歌地图API V3进行深入的中文解析,并提供一个简单的示例来帮助理解其基本用法。 首先,我们要了解如何引入谷歌地图API。在HTML文件中,我们需要在`&lt;head&gt;`标签内添加一个`&lt;script&gt;`标签,指定API的URL...

    map-example.zip_html5_javascript_map

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

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

    首先,创建一个Map对象非常简单,可以通过调用Map构造函数并传入可迭代对象(如数组)来初始化: ```javascript let map = new Map([[1, 'one'], [2, 'two']]); ``` Map对象提供了多种方法来操作和访问数据: 1. ...

    javascript map()方法解析

    下面是一个简单的例子,我们有一个包含平方数的数组`array1`,我们使用`map()`方法将每个元素乘以2: ```javascript const array1 = [1, 4, 9, 16]; // pass a function to map const map1 = array1.map(x =&gt; x * 2...

    JavaScript Array map.docx

    在JavaScript中,`Array.prototype.map()` 是一种非常实用的方法,用于创建一个新数组,其结果是调用提供的函数处理原数组的每一个元素。此方法不改变原数组,而是返回一个新的数组。 #### 二、基本用法与定义 `...

    一个简单的google map例子代码

    下面,我们将深入探讨如何利用Google Map API创建一个简单的地图应用,通过输入地名实现定位。 首先,我们需要了解Google Maps JavaScript API,它是实现地图功能的核心。这个API允许开发者在网页或Web应用中嵌入...

    一个简单的JavaScript Map实例(分享)

    然而,这个示例提供了一个自定义的Map实现,它在ES6 Map之前可能是很有用的。 自定义的Map类有以下几个核心方法: 1. `put(key, value)`:这个方法用于添加一个新的键值对。如果键不存在于Map中,它会被添加到`...

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

    在内容部分,作者提供了一个简单的JavaScript代码示例来展示如何遍历Map对象。示例中创建了一个Map对象,然后通过for...in循环来遍历该对象的键值对,并打印输出。具体代码如下: ```javascript var map = { "name...

Global site tag (gtag.js) - Google Analytics