js学习之javascript引用类型object--练习模拟Map和数组去重

一.模拟map

<script type="text/javascript">
	function Map(){
		//创建一个空对象
		var obj = {};
		// put 方法存值
		this.put = function(key,value){
			obj[key] = value;
		}
		// size 方法获得map容器的个数
		this.size = function(){
			var count = 0;
			for(var attr in obj){
				count++;
			}
			return count;
		}
		// get 方法 根据key 取得value
	    this.get = function(key){
	    	if(obj[key] || obj[key] === 0 || obj[key] === false){
	          return obj[key];
	    	}else{
	    		return null;
	    	}
	    }
	    //删除方法,根据key删除
	    this.remove = function(key){
	       if(obj[key] || obj[key] === 0 || obj[key] === false){
	       	  delete obj[key];
	       }
	    }
	    //遍历map的key(value);
	    this.foreach = function(fn){
	        // fn 为回调函数
	        for(var attr in obj){
	           fn(attr,obj[attr]);
	        }
	    }
	}
    //实例化map
    var m = new Map();
        //将键值添加到map中 
      var m = new Map();
	    m.put('01', 'abc');
	    m.put('02', false);
	    m.put('03', true);
	    m.put('04', new Date());


     

      //进行测试
      alert(m.size());  
      alert(m.get("03"));
      m.remove('03');
        alert(m.get('03'));//null

      m.foreach(function(key,value){
        alert(key + ":" + value);
      })
</script>
二、数组去重 

<script type="text/javascript">
// 利用在js对象中 key 是永远不会重复的 的去重方法 unique
	var arr1 = [1,2,3,4,5,2,1,3]
	function toObj(arr){
		var obj = {};
		for(var i=0,j=arr.length;i<j;i++ ){
		    obj[arr[i]] = true;
		}
		return obj;
	}
     function toArr(obj){
        var arr = [];
        for(var attr in obj){
        	if(obj.hasOwnProperty(attr)){
        		arr.push(attr);
        	}
        }
        return arr;
     }
     // 利用在js对象中 key 是永远不会重复的 的去重方法 unique
     function unique(arr){
     	return toArr(toObj(arr));
     }
    // 调用方法
    // unique(arr1);
    alert( unique(arr1));//1,2,3,4,5
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值