JS实现map

Published: 17 Sep 2013

####JS 的Object对象

对JS还是没太熟悉,在java里用惯了Map,希望JS里也能哟一个,于是自己写过一个,用数组实现,现在想起来那个办法好蠢。

其实JS的Object本身就可以当成一个Map来使用。

JS的Object对象可以随时对其添加属性,如 object.property = xxx; 然后可以用object.property或者object[property]这两种形式来访问属性的值。这里的属性名就相当于key,该属性的值就是value。

####然后比较一下点访问和用方括号访问的方法的不同。 用方括号访问的话,属性名可以为数字、数字开头的字符串、空格或者其他会导致语法错误的字符,也可以是关键字或者保留字。点访问的方法的话,则不能这样。

####实现

#####如下

function Map() {
	this.m = {};
}
Map.prototype.put = function(key, value) {
	this.m[key] = value;
}
Map.prototype.get = function(key) {
	return this.m[key];
}
Map.prototype.remove = function(key) {
	delete this.m[key];
}
Map.prototype.contain = function(key) {
	return this.m.hasOwnProperty(key);
}
Map.prototype.getKeys = function() {
	var arr = [];
	for(var o in this.m) {
		arr.push(o);
	}
	return arr;
}
Map.prototype.getValues = function() {
	var arr = [];
	for(var o in this.m) {
		arr.push(this.m[o]);	
	}
	return arr;
}