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 | } |