一、前言
关于在JavaScript的前端脚本中中定义类似java.util.HashMap的关系映射键值对的HashMap.js的函数,详情参见代码示例。
二、代码示例
1. HashMap.js
function HashMap() { @b@ //定义长度 @b@ var length = 0;@b@ //创建一个对象 @b@ var obj = new Object();@b@@b@ /** @b@ * 判断Map是否为空 @b@ */@b@ this.isEmpty = function() {@b@ return length == 0;@b@ };@b@@b@ /** @b@ * 判断对象中是否包含给定Key @b@ */@b@ this.containsKey = function(key) {@b@ return (key in obj);@b@ };@b@@b@ /** @b@ * 判断对象中是否包含给定的Value @b@ */@b@ this.containsValue = function(value) {@b@ for ( var key in obj) {@b@ if (obj[key] == value) {@b@ return true;@b@ }@b@ }@b@ return false;@b@ };@b@@b@ /** @b@ *向map中添加数据 @b@ */@b@ this.put = function(key, value) {@b@ if (!this.containsKey(key)) {@b@ length++;@b@ }@b@ obj[key] = value;@b@ };@b@@b@ /** @b@ * 根据给定的Key获得Value @b@ */@b@ this.get = function(key) {@b@ return this.containsKey(key) ? obj[key] : null;@b@ };@b@@b@ /** @b@ * 根据给定的Key删除一个值 @b@ */@b@ this.remove = function(key) {@b@ if (this.containsKey(key) && (delete obj[key])) {@b@ length--;@b@ }@b@ };@b@@b@ /** @b@ * 获得Map中的所有Value @b@ */@b@ this.values = function() {@b@ var _values = new Array();@b@ for ( var key in obj) {@b@ _values.push(obj[key]);@b@ }@b@ return _values;@b@ };@b@@b@ /** @b@ * 获得Map中的所有Key @b@ */@b@ this.keySet = function() {@b@ var _keys = new Array();@b@ for ( var key in obj) {@b@ _keys.push(key);@b@ }@b@ return _keys;@b@ };@b@@b@ /** @b@ * 获得Map的长度 @b@ */@b@ this.size = function() {@b@ return length;@b@ };@b@@b@ /** @b@ * 清空Map @b@ */@b@ this.clear = function() {@b@ length = 0;@b@ obj = new Object();@b@ };@b@}
2. 前端页面调用示例
<!DOCTYPE html>@b@<html> @b@<script src="HashMap.js"></script>@b@<body> @b@<script type="text/javascript"> @b@@b@ @b@ var map = new HashMap(); @b@ map.put("key1","Value1"); @b@ map.put("key2","Value2"); @b@ map.put("key3","Value3"); @b@ map.put("key4","Value4"); @b@ map.put("key5","Value5"); @b@ @b@ alert("size:"+map.size()+" key1:"+map.get("key1")); @b@ map.remove("key1"); @b@ map.put("key3","newValue"); @b@ @b@ var values = map.values(); @b@ for(var i in values){ @b@ document.write(i+":"+values[i]+" "); @b@ }@b@ @b@ document.write("<br>"); @b@@b@ var keySet = map.keySet(); @b@ for(var i in keySet){ @b@ document.write(i+":"+keySet[i]+" "); @b@ }@b@ @b@ alert(map.isEmpty()); @b@ @b@ @b@</script>@b@</body>@b@</html>