js 模拟Map类

原创 2013年12月04日 10:15:47

根据java中map的属性,实现key----value保存

1、使用数组方式存储数据,(使用闭包)

function Map() {
	var struct = function (key, value) {
		this.key = key;
		this.value = value;
	}

	var put = function (key, value) {
		for (var i = 0; i < this.arr.length; i++) {
			if (this.arr[i].key === key) {
				this.arr[i].value = value;
				return;
			}
		}
		this.arr[this.arr.length] = new struct(key, value);
	}

	var get = function (key) {
		for (var i = 0; i < this.arr.length; i++) {
			if (this.arr[i].key === key) {
				return this.arr[i].value;
			}
		}
		return null;
	}

	var remove = function (key) {
		var v;
		for (var i = 0; i < this.arr.length; i++) {
			v = this.arr.pop();
			if (v.key === key) {
				continue;
			}
			this.arr.unshift(v);
		}
	}

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

	var isEmpty = function () {
		return this.arr.length <= 0;
	}
	this.arr = new Array();
	this.get = get;
	this.put = put;
	this.remove = remove;
	this.size = size;
	this.isEmpty = isEmpty;
}

 

 2、使用JSON方式存储数据(使用原型方式拓展方法)

function Map() {
	this.obj = {};
	this.count = 0;
}

Map.prototype.put = function (key, value) {
	var oldValue = this.obj[key];
	if (oldValue == undefined) {
		this.count++;
	}
	this.obj[key] = value;
}

Map.prototype.get = function (key) {
	return this.obj[key];
}

Map.prototype.remove = function (key) {
	var oldValue = this.obj[key];
	if (oldValue != undefined) {
		this.count--;
		delete this.obj[key];
	}
}

Map.prototype.size = function () {
	return this.count;
}

var map = new Map();
map.put("key","map");
map.put("key","map1");
alert(map.get("key"));//map1
map.remove("key");
alert(map.get("key"));//undefined

 

使用JS模拟出Map对象

最近要做的一个项目,支持方提供的一个Map方法,用着相当可以
  • xinfei0803
  • xinfei0803
  • 2014年11月14日 12:11
  • 1650

模拟js数组方法map()

在js1.6中新增了的数组方法map(); 这是一个神奇的方法,它是一个方法,但这个方法的具体作用是不一定的,所以还依赖一定的逻辑。例如下面; var arr = [1,1,3,5,5] var...
  • Ted526200
  • Ted526200
  • 2013年01月18日 17:25
  • 1045

JavaScript 模拟类(class)的三种方法

将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言。如果你忘了填写用户名,它就跳出一个警告。 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途。程序员...
  • wabil
  • wabil
  • 2016年01月08日 09:14
  • 589

js 模拟面向对象的方式

首先简单了解一下 面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系...
  • qq_32566003
  • qq_32566003
  • 2017年02月21日 15:24
  • 193

使用JS模拟Map容器

使用js语法简单模拟java的Map容器
  • Raypod
  • Raypod
  • 2016年02月22日 22:35
  • 552

javascript:用object对象模拟java的map集合

/***************模拟java里的map集合***************/ function Map(){ ...
  • liqiancao
  • liqiancao
  • 2015年12月11日 18:04
  • 753

JavaScript实现Map数据结构,及JS中的单例

var MapClass=...{    map : new Array(),    //Update or Insert    setAt : function(key, value)...{   ...
  • smilingleo
  • smilingleo
  • 2007年09月10日 13:43
  • 1468

javascript实现java的map对象,js实现new map()

/* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP...
  • kongjiea
  • kongjiea
  • 2017年01月20日 17:21
  • 3634

js模仿java的Map集合,实现功能

java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构...
  • xmt1139057136
  • xmt1139057136
  • 2014年03月21日 13:02
  • 2110

js模拟map实现原理终极版

js模拟map实现原理终极版 Title function Map(){ this.container={}; ...
  • miachen520
  • miachen520
  • 2016年07月06日 10:30
  • 889
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js 模拟Map类
举报原因:
原因补充:

(最多只允许输入30个字)