001 | /* |
002 | * MAP对象,实现MAP功能 |
003 | * |
004 | * 接口: |
005 | * size() 获取MAP元素个数 |
006 | * isEmpty() 判断MAP是否为空 |
007 | * clear() 删除MAP所有元素 |
008 | * put(key, value) 向MAP中增加元素(key, value) |
009 | * remove(key) 删除指定KEY的元素,成功返回True,失败返回False |
010 | * get(key) 获取指定KEY的元素值VALUE,失败返回NULL |
011 | * element(index) 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL |
012 | * containsKey(key) 判断MAP中是否含有指定KEY的元素 |
013 | * containsValue(value) 判断MAP中是否含有指定VALUE的元素 |
014 | * values() 获取MAP中所有VALUE的数组(ARRAY) |
015 | * keys() 获取MAP中所有KEY的数组(ARRAY) |
016 | * |
017 | * 例子: |
018 | * var map = new Map(); |
019 | * |
020 | * map.put("key", "value"); |
021 | * var val = map.get("key") |
022 | * …… |
023 | * |
024 | */ |
025 | function Map() { |
026 | this .elements = new Array(); |
027 | |
028 | //获取MAP元素个数 |
029 | this .size = function () { |
030 | return this .elements.length; |
031 | } |
032 | |
033 | //判断MAP是否为空 |
034 | this .isEmpty = function () { |
035 | return ( this .elements.length < 1); |
036 | } |
037 | |
038 | //删除MAP所有元素 |
039 | this .clear = function () { |
040 | this .elements = new Array(); |
041 | } |
042 | |
043 | //向MAP中增加元素(key, value) |
044 | this .put = function (_key, _value) { |
045 | this .elements.push( { |
046 | key : _key, |
047 | value : _value |
048 | }); |
049 | } |
050 | |
051 | //删除指定KEY的元素,成功返回True,失败返回False |
052 | this .remove = function (_key) { |
053 | var bln = false ; |
054 | try { |
055 | for (i = 0; i < this .elements.length; i++) { |
056 | if ( this .elements[i].key == _key) { |
057 | this .elements.splice(i, 1); |
058 | return true ; |
059 | } |
060 | } |
061 | } catch (e) { |
062 | bln = false ; |
063 | } |
064 | return bln; |
065 | } |
066 | |
067 | //获取指定KEY的元素值VALUE,失败返回NULL |
068 | this .get = function (_key) { |
069 | try { |
070 | for (i = 0; i < this .elements.length; i++) { |
071 | if ( this .elements[i].key == _key) { |
072 | return this .elements[i].value; |
073 | } |
074 | } |
075 | } catch (e) { |
076 | return null ; |
077 | } |
078 | } |
079 | |
080 | //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL |
081 | this .element = function (_index) { |
082 | if (_index < 0 || _index >= this .elements.length) { |
083 | return null ; |
084 | } |
085 | return this .elements[_index]; |
086 | } |
087 | |
088 | //判断MAP中是否含有指定KEY的元素 |
089 | this .containsKey = function (_key) { |
090 | var bln = false ; |
091 | try { |
092 | for (i = 0; i < this .elements.length; i++) { |
093 | if ( this .elements[i].key == _key) { |
094 | bln = true ; |
095 | } |
096 | } |
097 | } catch (e) { |
098 | bln = false ; |
099 | } |
100 | return bln; |
101 | } |
102 | |
103 | //判断MAP中是否含有指定VALUE的元素 |
104 | this .containsValue = function (_value) { |
105 | var bln = false ; |
106 | try { |
107 | for (i = 0; i < this .elements.length; i++) { |
108 | if ( this .elements[i].value == _value) { |
109 | bln = true ; |
110 | } |
111 | } |
112 | } catch (e) { |
113 | bln = false ; |
114 | } |
115 | return bln; |
116 | } |
117 | |
118 | //获取MAP中所有VALUE的数组(ARRAY) |
119 | this .values = function () { |
120 | var arr = new Array(); |
121 | for (i = 0; i < this .elements.length; i++) { |
122 | arr.push( this .elements[i].value); |
123 | } |
124 | return arr; |
125 | } |
126 | |
127 | //获取MAP中所有KEY的数组(ARRAY) |
128 | this .keys = function () { |
129 | var arr = new Array(); |
130 | for (i = 0; i < this .elements.length; i++) { |
131 | arr.push( this .elements[i].key); |
132 | } |
133 | return arr; |
134 | } |
135 | } |