用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
分享到:
相关推荐
如果需要保持元素的顺序并且键总是数字,那么Array是一个好选择。但如果键可以是任意值,并且需要高效地查找或删除键值对,那么Map更为合适。熟练掌握这两种数据结构的用法,能帮助我们编写更高效、更易维护的...
javascript Map原型,对象,实现javascript中的Map数据类型功能
在描述中,“高人把google map的javascript全部下载下来 可以实现大部分功能 离线使用GOOGLEMAP”,说明了这是一个高手编写的程序,他或她已经将Google Maps的JavaScript库进行了本地化处理,使得开发者可以在没有...
自定义javascript的Map类,使用习惯完全依据于java的map使用习惯编写,java中map的用法基本一样,导入包即可使用
javascript map类。类中有相应demo,在javascript中实现Map的一个类,包括map中对应的一些数据结构相关算法。
- 使用数组的解构赋值,每个数组元素是一个包含两个元素的数组,分别代表键和值,如`let map = new Map([['key1', 'value1'], ['key2', 'value2']]);` 2. 存取数据: - `set(key, value)`:设置键值对。 - `get...
下面是一个简单的`Map`实现示例: ```javascript class SimpleMap { constructor() { this.store = []; } set(key, value) { let pair = this.findPair(key); if (pair) { pair.value = value; } else { ...
* size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * ...
通过上述实现,我们成功地利用JavaScript中的数组模拟了一个简单的Map对象。这种方式不仅加深了我们对Map这种数据结构的理解,同时也提供了一种灵活的方式来处理键值对数据。虽然ES6已经提供了内置的`Map`构造函数,...
在`map.js`文件中,可能会有对Map的实现或扩展,比如添加一个`forEach`方法遍历Map的所有键值对,或者一个`size`属性获取Map中的元素数量。 `object.js`文件可能包含与Object相关的辅助函数,比如深拷贝、属性检查...
javascript 模拟 java中的 List,Map js文件为 js/utils.js IE6.0 测试通过 <br>List: add(var obj) //添加一个元素 remove(var index) //删除一个元素 get(var index) //获取一个元素 remove...
在JavaScript中,`Map`是一种内置的数据结构,用于存储键值对。相比于对象,`Map`的优势在于它可以使用任何类型的值作为键,包括对象。在本文中,我们将深入探讨一种高性能的JavaScript `Map`实现,它基于JSON,具有...
本教程将对谷歌地图API V3进行深入的中文解析,并提供一个简单的示例来帮助理解其基本用法。 首先,我们要了解如何引入谷歌地图API。在HTML文件中,我们需要在`<head>`标签内添加一个`<script>`标签,指定API的URL...
在本项目中,“map-example.zip_html5_javascript_map”是一个包含使用HTML5和JavaScript实现的网页动态地图的压缩包。这个项目旨在展示如何利用这两种技术创建交互式地图应用,为用户提供丰富的地理信息可视化体验...
首先,创建一个Map对象非常简单,可以通过调用Map构造函数并传入可迭代对象(如数组)来初始化: ```javascript let map = new Map([[1, 'one'], [2, 'two']]); ``` Map对象提供了多种方法来操作和访问数据: 1. ...
下面是一个简单的例子,我们有一个包含平方数的数组`array1`,我们使用`map()`方法将每个元素乘以2: ```javascript const array1 = [1, 4, 9, 16]; // pass a function to map const map1 = array1.map(x => x * 2...
在JavaScript中,`Array.prototype.map()` 是一种非常实用的方法,用于创建一个新数组,其结果是调用提供的函数处理原数组的每一个元素。此方法不改变原数组,而是返回一个新的数组。 #### 二、基本用法与定义 `...
下面,我们将深入探讨如何利用Google Map API创建一个简单的地图应用,通过输入地名实现定位。 首先,我们需要了解Google Maps JavaScript API,它是实现地图功能的核心。这个API允许开发者在网页或Web应用中嵌入...
然而,这个示例提供了一个自定义的Map实现,它在ES6 Map之前可能是很有用的。 自定义的Map类有以下几个核心方法: 1. `put(key, value)`:这个方法用于添加一个新的键值对。如果键不存在于Map中,它会被添加到`...
在内容部分,作者提供了一个简单的JavaScript代码示例来展示如何遍历Map对象。示例中创建了一个Map对象,然后通过for...in循环来遍历该对象的键值对,并打印输出。具体代码如下: ```javascript var map = { "name...