关闭

js 模拟Map类

226人阅读 评论(0) 收藏 举报

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

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:286059次
    • 积分:8489
    • 等级:
    • 排名:第2296名
    • 原创:1096篇
    • 转载:14篇
    • 译文:0篇
    • 评论:4条
    最新评论