js 模拟Map类

根据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和StringBuilder

2013年02月06日 9KB 下载

js-map js-map

2012年03月24日 1KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭