博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript实现的简单Map
阅读量:6792 次
发布时间:2019-06-26

本文共 2201 字,大约阅读时间需要 7 分钟。

  hot3.png

var HashMap = function(){  this.initialize();}HashMap.prototype = {  hashkey_prefix : "<#HashMapHashkeyPerfix>",  hashcode_field : "<#HashMapHashcodeField>",  hashmap_instance_id:0,    initialize : function(){    this.backing_hash = {};    this.code = 0;    this.hashmap_instance_id += 1;    this.instance_id = this.hashmap_instance_id;  },    hashcodeField : function(){    return this.hashcode_field + this.instance_id;  },    put : function(key,value){    var prev;    if(key && value){      var hashCode;      if( typeof(key) === 'number' || typeof(key) === 'string' ){          hashCode = key;      }else{          hashCode = key[this.hashcodeField()];      }            if( hashCode ){        prev = this.backing_hash[hashCode];      }else{        this.code += 1;        hashCode = this.hashkey_prefix + this.code;        key[this.hashcodeField()] = hashCode;      }      this.backing_hash[hashCode] = [key,value];    }    return prev === undefined ? undefined : prev[1];  },  get : function(key){    var value;    if(key){      var hashCode;      if( typeof(key) === 'number' || typeof(key) === 'string'  ){        hashCode = key;      }      else{        hashCode = key[this.hashcodeField()];      }      if(hashCode){        value = this.backing_hash[hashCode];      }    }    return value === undefined ? undefined : value[1];  },  del : function(key){    var success = false;    if(key){      var hashCode;      if( typeof(key) === 'number' || typeof(key) === 'string'  ){        hashCode = key;      }      else{        hashCode = key[this.hashcodeField()];      }      if(hashCode){         var prev = this.backing_hash[hashCode];         this.backing_hash[hashCode] = undefined;         if(prev !== undefined){           key[this.hashcodeField()] = undefined;           success = true;         }      }    }    return success;  },     each : function(callback,args){      var key;      for( key in this.backing_hash){         if(callback.call(this.backing_hash[key][1], this.backing_hash[key][0], this.backing_hash[key][1]) === false)              break;      }      return this;   },   toString : function(){       return "HashMapJS"       }}

 

转载于:https://my.oschina.net/exit/blog/735460

你可能感兴趣的文章
如何衡量研发效能?阿里资深技术专家提出了5组指标
查看>>
vue2.0+vue-router构建一个简单的列表页
查看>>
Python实现二叉树相关算法
查看>>
Android Studio 导入 AOSP 源码
查看>>
git status将文件状态标为renamed问题探究
查看>>
计算机开放电子书归档 2018
查看>>
跨域解决方案之nginx
查看>>
hibernate使用DetachedCriteria案例
查看>>
【Arduino基础教程】Moisture Sensor土壤湿度传感器
查看>>
tablesorter 使用
查看>>
一种用手机号码定位机主的理论方法
查看>>
underscore源码解析1
查看>>
html5从0到1-html5的简易数据库开发(18)
查看>>
spring cloud gateway 全局过滤器
查看>>
RAP Mock 工具模拟数据
查看>>
Confluence 6 确定一个生产系统备份方案
查看>>
在Chrome浏览器中保存的密码有多安全?
查看>>
撩人情话(三)
查看>>
JetBrains Product Pack for Students
查看>>
内存顺序(Memory Order)
查看>>