function HashMap () {
data = {};
var size = 0;
// 清除所有的属性
this.clear = function () {
data = {};
}
/**
* 判断key是否存在
* @param key
* @return Boolean
*/
this.containsKey = function () {
return Boolean(arguments[0] in data);
}
/**
* 判断值是否存在
* @param value
* @return Boolean
*/
this.containsValue = function () {
var str = data.toSource();
return str.indexOf(arguments[0]) == -1 ? false : true;
}
/**
* 返回key对应的v
*/
this.get = function () {
return data[arguments[0]];
}
/**
* 判断是否为空
* @return Boolean
*/
this.isEmpty = function () {
return size == 0 ? true : false;
}
/**
* 取出所有的key
* @return Array()
*/
this.keySet = function () {
var arr = new Array();
for (var i in data) {
arr.push(i);
}
return arr;
}
/**
* 将key,value放入对象
* @param key
* @param value
*/
this.put = function () {
data[arguments[0]] = [arguments[1]];
if (!this.containsKey(arguments[0])) {
size++;
}
}
/**
* 将另外一个HashMap 复制到此Map
* @param map
*/
this.putAll = function () {
data = arguments[0].getData();
}
/**
* 删除key对应的value
* @param key
* @return value与 key 关联的旧值
*/
this.remove = function () {
var o = this.get(arguments[0]);
if (o) {
delete data[o];
return o;
}
else {
return null;
}
}
/**
* 返回此HashMap的大小
* @reaturn Int
*/
this.size = function () {
return size;
}
/**
* 返回此map所有的value集合
* @return Connections
*/
this.values = function () {
var arr = new Array();
for (var i in data) {
arr.push(data[i])
}
return arr;
}
this.getData = function () {
return data;
}
}
JavaScript本身是没有map的,上面的代码可以完全在JavaScript中实现Java Map的用法,调用方法也是非常简单,如下:
var jsMap = new HashMap();
jsMap.containsKey("key名");
jsMap.put("key名","key值");
可能当你看到这里的时候会有疑问,在平时代码编写的时候,有必要扩展JavaScript的Map来使用么?
有这样一个例子,如果你又一组name=“picUrl”的text文本框,你需要判断出这组text文本框中是否存在重复?
那么,这种情况Map就发挥它本身的作用了!