JS hasmap之操作

1 篇文章 0 订阅

文章之一:

function Map() {  
    /** 存放键的数组(遍历用到) */ 
    this.keys = new Array();  
    /** 存放数据 */ 
    this.data = new Object();  
      
    /** 
     * 放入一个键值对 
     * @param {String} key 
     * @param {Object} value 
     */ 
    this.put = function(key, value) {  
        if(this.data[key] == null){  
            this.keys.push(key);  
        }  
        this.data[key] = value;  
    };  
      
    /** 
     * 获取某键对应的值 
     * @param {String} key 
     * @return {Object} value 
     */ 
    this.get = function(key) {  
        return this.data[key];  
    };  
      
    /** 
     * 删除一个键值对 
     * @param {String} key 
     */ 
    this.remove = function(key) {  
        this.keys.remove(key);  
        this.data[key] = null;  
    };  
      
    /** 
     * 遍历Map,执行处理函数 
     *  
     * @param {Function} 回调函数 function(key,value,index){..} 
     */ 
    this.each = function(fn){  
        if(typeof fn != 'function'){  
            return;  
        }  
        var len = this.keys.length;  
        for(var i=0;i<len;i++){  
            var k = this.keys[i];  
            fn(k,this.data[k],i);  
        }  
    };  
      
    /** 
     * 获取键值数组(类似Java的entrySet()) 
     * @return 键值对象{key,value}的数组 
     */ 
    this.entrys = function() {  
        var len = this.keys.length;  
        var entrys = new Array(len);  
        for (var i = 0; i < len; i++) {  
            entrys[i] = {  
                key : this.keys[i],  
                value : this.data[i]  
            };  
        }  
        return entrys;  
    };  
      
    /** 
     * 判断Map是否为空 
     */ 
    this.isEmpty = function() {  
        return this.keys.length == 0;  
    };  
      
    /** 
     * 获取键值对数量 
     */ 
    this.size = function(){  
        return this.keys.length;  
    };  
      
    /** 
     * 重写toString  
     */ 
    this.toString = function(){  
        var s = "{";  
        for(var i=0;i<this.keys.length;i++,s+=','){  
            var k = this.keys[i];  
            s += k+"="+this.data[k];  
        }  
        s+="}";  
        return s;  
    };  
}  
 
 
function testMap(){  
    var m = new Map();  
    m.put('key1','Comtop');  
    m.put('key2','南方电网');  
    m.put('key3','景新花园');  
    alert("init:"+m);  
      
    m.put('key1','康拓普');  
    alert("set key1:"+m);  
      
    m.remove("key2");  
    alert("remove key2: "+m);  
      
    var s ="";  
    m.each(function(key,value,index){  
        s += index+":"+ key+"="+value+"\n";  
    });  
    alert(s);  
}

文章之二:

<script language="javascript">
function HashMap(){
/**Map大小**/
var size=0;
/**对象**/
var entry=new Object();
/**Map的存put方法**/
this.put=function(key,value){
if(!this.containsKey(key)){
size++;
entry[key]=value;
}
}
/**Map取get方法**/
this.get=function(key){
return this.containsKey(key) ? entry[key] : null;
}
/**Map删除remove方法**/
this.remove=function(key){
if(this.containsKey(key) && ( delete entry[key] )){
size--;
}
}
/**是否包含Key**/
this.containsKey= function (key){
return (key in entry);
}
/**是否包含Value**/
this.containsValue=function(value){
for(var prop in entry)
{
if(entry[prop]==value){
return true;
}
}
return false;
}
/**所有的Value**/
this.values=function(){
var values=new Array();
for(var prop in entry)
{
values.push(entry[prop]);
}
return values;
}
/**所有的 Key**/
this.keys=function(){
var keys=new Array();
for(var prop in entry)
{
keys.push(prop);
}
return keys;
}
/**Map size**/
this.size=function(){
return size;
}
/**清空Map**/
this.clear=function(){
size=0;
entry=new Object();
}

}
//创建HashMap对象
var hashMap=new HashMap();
  hashMap.put("A","1");
  hashMap.put("B","2");
  hashMap.put("A","5");
  hashMap.put("C","3");
  hashMap.put("A","4");
alert(hashMap.size());

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值