`
mj4d
  • 浏览: 302951 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

javascript的一个map实现

阅读更多

很早收集的,不知道是从哪里流传出来,整理下分享给大家

function Map() {

	// 底层保存数据结构
	var struct = function(key, value) {
		this.key = key;
		this.value = value;
	};

	// 如果key相同值会被覆盖
	var put = function(key, value) {
		for ( var i = 0; i < this.size(); i++) {
			if (this.arr[i].key === key) {
				this.arr[i].value = value;
				return;
			}
		}

		this.arr[this.arr.length] = new struct(key, value);
	};

	// 根据key获取值
	var get = function(key) {
		for ( var i = 0; i < this.size(); i++) {
			if (this.arr[i].key === key) {
				return this.arr[i].value;
			}
		}

		return null;
	};

	// 删除
	var remove = function(key) {
		for ( var i = 0; i < this.size(); i++) {
			if (this.arr[i].key === key) {
				this.arr.splice(i, 1);
			}
		}
	};

	var size = function() {
		return this.arr.length;
	};

	var isEmpty = function() {
		return this.size() <= 0;
	};

	// 迭代所有key
	var listKeys = function() {
		var key = [];
		for ( var i = 0; i < this.size(); i++) {
			key.push(this.arr[i].key);
		}
		return key;
	};

	var methodParamNames = function(method) {
		var names = new Array;
		for ( var i = 0; i < this.size(); i++) {
			if (this.arr[i].key.indexOf(method + '_') >= 0) {
				var vals = this.arr[i].key.split("_");
				if (vals[2] != "result")
					names.push(vals[1]);
			}
		}

		return names;
	};

	// 暴露私有方法
	this.arr = new Array();
	this.get = get;
	this.put = put;
	this.remove = remove;
	this.size = size;
	this.isEmpty = isEmpty;
	this.methodParamNames = methodParamNames;
	this.keys = listKeys;
}

 

简单的测试:

var map = new Map();
map.put("name", "robin");
map.put("1", "aaaa");
map.put(1, "bbbb");
console.log(map.arr);
console.log(map.size());
console.log(map.keys());
console.log(map.get("1"));
map.remove(1);
console.log(map.size());

 

分享到:
评论

相关推荐

    JavaScript实现Array(数组)和Map

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

    javascript的Map实现(高性能)

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

    在JavaScript中实现map对象

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

    JavaScript 实现Array(数组)和Map

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

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

    这篇博客文章可能探讨了如何通过自定义方式实现一个类似于`Map`的功能。下面将详细讨论`Map`集合的关键特性以及可能的自定义实现。 **Map集合的特性** 1. **键值对存储**:`Map`允许存储任意类型的键值对,包括...

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

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

    利用js实现Map

    在JavaScript的世界里,`Map`对象是一个强大的数据结构,它允许我们存储键值对,且键可以是任意类型,而不仅仅是字符串。这与原生的`Object`有着本质的区别,`Object`的键必须是字符串或符号。本文将深入探讨`Map`...

    gmap.rar_GMAP_javascript_map_map javascript_map offline

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

    javascript实现map功能极其方便

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

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

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

    javascript Map对象 原型 插件

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

    javascript 中Map的使用

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

    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...

    js实现map用法

    例如,在实现一个缓存系统时,可以使用Map来存储最近访问的项目,并保持它们的访问顺序。 此外,Map可以与其他数据结构结合使用,如Set。例如,我们可以创建一个Map,其中键是Set,值是相关联的数据,这样可以方便...

    js 实现map的方式

    例如,`Array.from(map)`可以将Map转换为数组,`new Set(map)`则可以创建一个新的Set,包含Map的所有键。 6. **弱引用**:JavaScript还提供了一种叫做WeakMap的特殊类型,它的键必须是对象,并且是弱引用,这意味着...

    javascript map类

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

    map-example.zip_html5_javascript_map

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

    JavaScript中实现Map的示例代码

    在本示例中,我们将详细讨论如何使用自定义函数实现一个简单的Map功能。 首先,创建一个新的Map实例: ```javascript var map = new Map(); ``` 接着,我们可以使用`put`方法来添加键值对: ```javascript map.put...

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

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

    JavaScript实现鼠标移到地图上显示实际地理坐标

    本教程将深入探讨如何利用SuperMap iClient 6R for JavaScript库来实现一个功能,即当鼠标移动到地图上时,实时显示当前鼠标的地理坐标。SuperMap是一款强大的GIS软件,其iClient系列为开发者提供了丰富的JavaScript...

Global site tag (gtag.js) - Google Analytics