1 function Map() {
2 this.elements = new Array();
3
4 // 获取MAP元素个数
5 this.size = function() {
6 return this.elements.length;
7 }
8
9 // 判断MAP是否为空
10 this.isEmpty = function() {
11 return (this.elements.length < 1);
12 }
13
14 // 删除MAP所有元素
15 this.clear = function() {
16 this.elements = new Array();
17 }
18
19 // 向MAP中增加唯一元素(key, value)
20 this.put = function(_key, _value) {
21 this.remove(_key);
22 this.elements.push({
23 key : _key,
24 value : _value
25 });
26 }
27
28 // 向MAP中增加重复元素(key, value)
29 this.putRepeat = function(_key, _value) {
30 this.elements.push({
31 key : _key,
32 value : _value
33 });
34 }
35
36 // 删除指定KEY的元素,成功返回True,失败返回False
37 this.remove = function(_key) {
38 var bln = false;
39 try {
40 for (i = 0; i < this.elements.length; i++) {
41 if (this.elements[i].key == _key) {
42 this.elements.splice(i, 1);
43 return true;
44 }
45 }
46 } catch (e) {
47 bln = false;
48 }
49 return bln;
50 }
51
52 // 获取指定KEY的元素值VALUE,失败返回NULL
53 this.get = function(_key) {
54 try {
55 var result = null;
56 for (i = 0; i < this.elements.length; i++) {
57 if (this.elements[i].key == _key) {
58 result = this.elements[i].value;
59 }
60 }
61 return result;
62 } catch (e) {
63 return null;
64 }
65 }
66
67 // 设置MAP中指定KEY元素的值VALUE, 失败返回NULL
68 this.set = function(_key, _value) {
69 try {
70 this.remove(_key);
71 this.put(_key, _value);
72 } catch (e) {
73 return null;
74 }
75 }
76
77 // 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
78 this.element = function(_index) {
79 if (_index < 0 || _index >= this.elements.length) {
80 return null;
81 }
82 return this.elements[_index];
83 }
84
85 // 判断MAP中是否含有指定KEY的元素
86 this.containsKey = function(_key) {
87 var bln = false;
88 try {
89 for (i = 0; i < this.elements.length; i++) {
90 if (this.elements[i].key == _key) {
91 bln = true;
92 }
93 }
94 } catch (e) {
95 bln = false;
96 }
97 return bln;
98 }
99
100 // 判断MAP中是否含有指定VALUE的元素
101 this.containsValue = function(_value) {
102 var bln = false;
103 try {
104 for (i = 0; i < this.elements.length; i++) {
105 if (this.elements[i].value == _value) {
106 bln = true;
107 }
108 }
109 } catch (e) {
110 bln = false;
111 }
112 return bln;
113 }
114
115 // 获取MAP中所有VALUE的数组(ARRAY)
116 this.values = function() {
117 var arr = new Array();
118 for (i = 0; i < this.elements.length; i++) {
119 arr.push(this.elements[i].value);
120 }
121 return arr;
122 }
123
124 // 获取MAP中所有KEY的数组(ARRAY)
125 this.keys = function() {
126 var arr = new Array();
127 for (i = 0; i < this.elements.length; i++) {
128 arr.push(this.elements[i].key);
129 }
130 return arr;
131 }
132 }