javascript 简单实现map操作

上午有些闲着无聊,写点js打发时间,偶然想到原生javascript中并没有Map这种数据类型,就自己动手写了个简单的Map类,也许自己以后会用的上,使用时把下面这个JS文件导入,然后 var map = new Map()就可以了

(
	function(){
		var obj = {};
		Map = function(){
			
		}
		/**
		 *将指定的值与此映射中的指定键关联
 		 * @param {Object} key
 		 * @param {Object} value
		 */
		Map.prototype.put = function(key,value){
			if(key){
				obj[key] = value;
			}
		}
		/**
		 * 
 		 * 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
		 */
		Map.prototype.get = function(key){
			if(key){
				return obj[key];
			}else{
				return null;
			}
		}
		/**
		 *从此映射中移除所有映射关系 
		 */
		Map.prototype.clear = function(){
			obj = {};
		}
		/**
		 *返回此映射中的键-值映射关系数 
		 */
		Map.prototype.size = function(){
			var size = 0;
			for(var i in obj){
				size++;
			}
			return size;
		}
		/**
		 * 返回此映射中所包含的键的 视图
		 */
		Map.prototype.keySet = function(){
			var key = [];
			for(var i in obj){
				key.push(i);
			}
			return key;
		}
		/**
		 *返回此映射中所包含的值的  视图
		 */
		Map.prototype.valueSet = function(){
			var value = [];
			for(var i in obj){
				value.push(obj[i]);
			}
			return value;
		}
		/**
		 *从此映射中移除指定键的映射关系(如果存在)。 
		 */
		Map.prototype.remove = function(key){
			if(key){
				delete obj[key];
			}
		}
		/**
		 *如果此映射不包含键-值映射关系,则返回 true 
		 */
		Map.prototype.isEmpty = function(){
			return this.size() ==0;
		}
		/**
		 *如果此映射包含指定键的映射关系,则返回 true。 
         * @param {Object} key
		 */
		Map.prototype.containsKey = function(key){
			if(key){
				for(var i in obj){
					if(i === key){
						return true;
					}
				}
			}
			return false;
		}
		/**
		 *如果此映射将一个或多个键映射到指定值,则返回 true。 
 		 * @param {Object} key
		 */
		Map.prototype.containsValue = function(value){
			if(value){
				for(var i in obj){
					if(obj[i] === value){
						return true;
					}
				}
			}
			return false;
		}
		/**
		 * 从指定映射中将所有映射关系复制到此映射中
 		 * @param {Object} anOtherMap
		 */
		Map.prototype.putAll = function(anOtherMap){
			if(anOtherMap){
				for(var i in anOtherMap){
					this.put(i,anOtherMap[i]);
				}
			}			
		}		
		Map.prototype.toString = function(){
			var str = "{";
			for(var i in obj){
				str += (i + ":" + obj[i] + ",")
			}
			if(str.lastIndexOf(",") != -1){
				str = str.substr(0,str.lastIndexOf(","));
			}			
			str += "}"
			return str;
		}
	}
)();


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值