SOURCE

function HashMap(){

/**大小 */
var size = 0;
/**初始数组 */
var table=[];
/**初始数组长度 */
var length = 16;
/**扩容阈值 */
var threshold = 0.75*length;

    /**ascii码拼接成hashcode */
this.hashcode=function(str){

    var hashcode = '';
    for(var i = 0;i<=str.length-1;i++){
        hashcode+=str.charCodeAt(i);
    }

    return hashcode;
}

/**哈希函数散列扰动 jdk1.8内置*/
this.hash = function(h){
   h ^= (h >>> 16);
        return h;
}
/**取下标 */
this.indexFor = function(h){
    
    return h&(length-1);
}

this.tableValue = function(){
    return table;
}

/**增加链表key,value的保存*/
this.addEntry = function(key,value,index){
        var e = table[index];
        table[index]={key:key,value:value,next:e}
        if(size++>threshold)
        {
            length*=2;
            threshold=length*0.75;
        }

}

/**put.entry */
this.put = function(key,value){
    var hashcode = this.hashcode(key);
    var hash = this.hash(hashcode);
    var index = this.indexFor(hash);
    for(var e=table[index];e!=null&&e!=undefined;e=e.next){
        
        if(e.key == key){
            var oldvalue = e.value;
            e.value = value;
            return oldvalue;
        }

   
    }
     this.addEntry(key,value,index);
}

/**get.entry */
this.get = function(key){
    var hashcode = this.hashcode(key);
    var hash = this.hash(hashcode);
    var index = this.indexFor(hash);
  for(var e=table[index];e!=null&&e!=undefined;e=e.next){
        if(e.key == key){
           
            return e.value;
        }

    return undefined;
}

}

/**remove.entry */
this.remove =function(key){
    var hashcode = this.hashcode(key);
    var hash = this.hash(hashcode);
    var index = this.indexFor(hash);
    var preNode;
   for(var e=table[index];e!=null&&e!=undefined;preNode = e,e=e.next)
    {       
         if(e.key == key){
            if(preNode == null||preNode==undefined)
                {
                    table[index] = e.next;
                }else
                {
                    preNode.next=e.next;
                }
            return e.value;
        }
    }
    
}
}
var hs = new HashMap();
hs.put("1243","1");
console.log(hs.get("1243"));
hs.remove("1243");
console.log(hs.get("1243"));
hs.put("1283","2");
hs.put("1283","4");
console.log(hs.get("1283"));

console 命令行工具 X clear

                    
>
console