[转]Js实现类似Java中的Map对象

js 代码
  1. 出处:http://redhacker.blueidea.com/archives/2006/3637.shtml
  2. By  凌云志 发表于 2006-11-13 0:03:00      
  3.   
  4.   
  5. 在Java中,Map对象是一个十分有用的对象,因此,我最近一直想去自己实现一个Js的Map类,后来发现网络上有一个不错的实现,参考网上流传的一个实现,我整理了一下,并且准备再加一个sort()方法,具体实现,有时间再补上。   
  6.   
  7. 代码如下:   
  8.   
  9. <script>   
  10.  function struct(key, value) {   
  11.    this.key = key;   
  12.    this.value = value;   
  13.  }   
  14.     
  15.  function put(key, value){   
  16.    for (var i = 0; i < this.arr.length; i++) {   
  17.      if ( this.arr[i].key === key ) {   
  18.        this.arr[i].value = value;   
  19.        return;   
  20.      }   
  21.    }   
  22.    this.arr[this.arr.length] = new struct(key, value);   
  23.  }   
  24.     
  25.  function get(key) {   
  26.    for (var i = 0; i < this.arr.length; i++) {   
  27.      if ( this.arr[i].key === key ) {   
  28.        return this.arr[i].value;   
  29.      }   
  30.    }   
  31.    return null;   
  32.  }   
  33.     
  34.  function remove(key) {   
  35.    var v;   
  36.    for (var i = 0; i < this.arr.length; i++) {   
  37.      v = this.arr.pop();   
  38.      if ( v.key === key ) {   
  39.        continue;   
  40.      }   
  41.      this.arr.unshift(v);   
  42.    }   
  43.  }   
  44.     
  45.  function size() {   
  46.    return this.arr.length;   
  47.  }   
  48.     
  49.  function isEmpty() {   
  50.    return this.arr.length <= 0;   
  51.  }   
  52.     
  53.  function Map() {   
  54.    this.arr = new Array();   
  55.    this.get = get;   
  56.    this.put = put;   
  57.    this.remove = remove;   
  58.    this.size = size;   
  59.    this.isEmpty = isEmpty;   
  60.    this.sort = sort;   
  61.  }   
  62.     
  63.  function sort() {   
  64.      
  65.  }   
  66. </script>   
  67.   
  68. <script>   
  69.  //测试   
  70.  var map = new Map();   
  71.  map.put("dgq","redhacker");   
  72.  map.put("dgq","douguoqiang");   
  73.  map.put(" array",["a","b","c"]);   
  74.  alert(map.get("dgq"));   
  75.  alert(map.get("array"));   
  76. </script>   
  77.   
  78. ===============================================   
  79.   
  80. 今天大致思略了一下,不能加sort()方法,原因也不罗嗦了,现在将上面的例子重新整理一下,改为一个函数,方便以后调用。   
  81.   
  82. <script>    
  83. function Map() {   
  84.  var struct = function(key, value) {   
  85.   this.key = key;   
  86.   this.value = value;   
  87.  }   
  88.     
  89.  var put = function(key, value){   
  90.   for (var i = 0; i < this.arr.length; i++) {   
  91.    if ( this.arr[i].key === key ) {   
  92.     this.arr[i].value = value;   
  93.     return;   
  94.    }   
  95.   }   
  96.    this.arr[this.arr.length] = new struct(key, value);   
  97.  }   
  98.     
  99.  var get = function(key) {   
  100.   for (var i = 0; i < this.arr.length; i++) {   
  101.    if ( this.arr[i].key === key ) {   
  102.      return this.arr[i].value;   
  103.    }   
  104.   }   
  105.   return null;   
  106.  }   
  107.     
  108.  var remove = function(key) {   
  109.   var v;   
  110.   for (var i = 0; i < this.arr.length; i++) {   
  111.    v = this.arr.pop();   
  112.    if ( v.key === key ) {   
  113.     continue;   
  114.    }   
  115.    this.arr.unshift(v);   
  116.   }   
  117.  }   
  118.     
  119.  var size = function() {   
  120.   return this.arr.length;   
  121.  }   
  122.     
  123.  var isEmpty = function() {   
  124.   return this.arr.length <= 0;   
  125.  }   
  126.   
  127.  this.arr = new Array();   
  128.  this.get = get;   
  129.  this.put = put;   
  130.  this.remove = remove;   
  131.  this.size = size;   
  132.  this.isEmpty = isEmpty;   
  133. }   
  134. </script>   
  135.   
  136. <script>   
  137.  var map = new Map();   
  138.  map.put("re","redhacker");   
  139.  map.put("do","douguoqiang");   
  140.  map.put("gq","dougq");   
  141.  alert("map的大小为:" + map.size())   
  142.  alert("key为re的map中存储的对象为:" + map.get("re"));   
  143.  map.remove("re");   
  144.  alert("移除key为re的对象后,获取key为re的map中存储的对象为:" + map.get("re"));   
  145.  alert("map移除一个元素后的大小为:" + map.size());   
  146.  alert("map是否是一个空map:" + map.isEmpty());   
  147. </script>    

你可能感兴趣的:(java,Blog)