Js实现Map对象

/**  
 * 自定义js map对象  
 * @return  
 */  
function Map()  
{  
     this.elements = new Array();  
       
     //获取MAP元素个数  
     this.size = function() {  
      return this.elements.length;  
     }  
       
     //判断MAP是否为空  
     this.isEmpty = function() {  
      return (this.elements.length < 1);  
     }  
       
     //删除MAP所有元素  
     this.clear = function() {  
      this.elements = new Array();  
     }  
       
     //向MAP中增加元素(key, value)   
//     this.put = function(_key, _value) {  
//      this.elements.push({key:_key, value:_value});  
//     }  
     
    //向MAP中增加元素(key, value)   
     this.put = function(_key, _value) { 
        if (this.containsKey(_key) == true) { 
//            if(this.containsValue(_value)){ 
//                if(this.remove(_key) == true){ 
//                    this.elements.push( { key : _key, value : _value }); 
//                } 
//             }else{ 
//                this.elements.push( { key : _key, value : _value }); 
//             } 
               this.elements[this.indexOf(_key)].value = _value;
        } else { 
             this.elements.push( { key : _key, value : _value }); 
        } 
    },
       
     //删除指定KEY的元素,成功返回True,失败返回False  
     this.remove = function(_key) {  
      var bln = false;  
      try  {     
       for (i = 0; i < this.elements.length; i++) {    
        if (this.elements[i].key == _key){  
         this.elements.splice(i, 1);  
         return true;  
        }  
       }  
      }catch(e){  
       bln = false;      
      }  
      return bln;  
     }  
       
     //获取指定KEY的元素值VALUE,失败返回NULL  
     this.get = function(_key) {  
      try{     
       for (i = 0; i < this.elements.length; i++) {  
        if (this.elements[i].key == _key) {  
         return this.elements[i].value;  
        }  
       }  
      }catch(e) {  
       return null;     
      }  
     }  
     
     //获取指定KEY的元素值索引,失败返回NULL  
     this.indexOf= function(_key) {  
      try{     
       for (i = 0; i < this.elements.length; i++) {  
        if (this.elements[i].key == _key) {  
         return i;  
        }  
       }  
      }catch(e) {  
       return null;     
      }  
       return -1; 
     }  
  
     //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL  
     this.element = function(_index) {  
      if (_index < 0 || _index >= this.elements.length)  
      {  
       return null;  
      }  
      return this.elements[_index];  
     }  
       
     //判断MAP中是否含有指定KEY的元素  
     this.containsKey = function(_key) {  
      var bln = false;  
      try {  
       for (i = 0; i < this.elements.length; i++) {    
        if (this.elements[i].key == _key){  
         bln = true;  
        }  
       }  
      }catch(e) {  
       bln = false;      
      }  
      return bln;  
     }  
          
     //判断MAP中是否含有指定VALUE的元素  
     this.containsValue = function(_value) {  
      var bln = false;  
      try {  
       for (i = 0; i < this.elements.length; i++) {    
        if (this.elements[i].value == _value){  
         bln = true;  
        }  
       }  
      }catch(e) {  
       bln = false;      
      }  
      return bln;  
     }  
       
     //获取MAP中所有VALUE的数组(ARRAY)  
     this.values = function() {  
      var arr = new Array();  
      for (i = 0; i < this.elements.length; i++) {    
       arr.push(this.elements[i].value);  
      }  
      return arr;  
     }  
       
     //获取MAP中所有KEY的数组(ARRAY)  
     this.keys = function() {  
      var arr = new Array();  
      for (i = 0; i < this.elements.length; i++) {    
       arr.push(this.elements[i].key);  
      }  
      return arr;  
     };  
}  
转载于: http://blog.sina.com.cn/s/blog_6c1da7060100sowv.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值