天天看点

JavaScript中实现类似Java中的Map对象

转自:http://apps.hi.baidu.com/share/detail/30517952

  1. <script>   
  2. function Map() {   
  3. var struct = function (key, value) {   
  4.    this .key = key;   
  5.    this .value = value;   
  6. }   
  7. var put = function (key, value){   
  8.    for ( var i = 0; i < this .arr.length; i++) {   
  9.     if ( this .arr[i].key === key ) {   
  10.      this .arr[i].value = value;   
  11.      return ;   
  12.     }   
  13.    }   
  14.     this .arr[ this .arr.length] = new struct(key, value);   
  15. }   
  16. var get = function (key) {   
  17.    for ( var i = 0; i < this .arr.length; i++) {   
  18.     if ( this .arr[i].key === key ) {   
  19.       return this .arr[i].value;   
  20.     }   
  21.    }   
  22.    return null ;   
  23. }   
  24. var remove = function (key) {   
  25.    var v;   
  26.    for ( var i = 0; i < this .arr.length; i++) {   
  27.     v = this .arr.pop();   
  28.     if ( v.key === key ) {   
  29.      continue ;   
  30.     }   
  31.     this .arr.unshift(v);   
  32.    }   
  33. }   
  34. var size = function () {   
  35.    return this .arr.length;   
  36. }   
  37. var isEmpty = function () {   
  38.    return this .arr.length <= 0;   
  39. }   
  40. this .arr = new Array();   
  41. this .get = get;   
  42. this .put = put;   
  43. this .remove = remove;   
  44. this .size = size;   
  45. this .isEmpty = isEmpty;   
  46. }   
  47. </script>   
  48. <script>   
  49. var map = new Map();   
  50. map.put( "re" , "redhacker" );   
  51. map.put( "do" , "douguoqiang" );   
  52. map.put( "gq" , "dougq" );   
  53. alert( "map的大小为:" + map.size())   
  54. alert( "key为re的map中存储的对象为:" + map.get( "re" ));   
  55. map.remove( "re" );   
  56. alert( "移除key为re的对象后,获取key为re的map中存储的对象为:" + map.get( "re" ));   
  57. alert( "map移除一个元素后的大小为:" + map.size());   
  58. alert( "map是否是一个空map:" + map.isEmpty());