`
hotsmile
  • 浏览: 18801 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

javascript map 实现

阅读更多

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 }

分享到:
评论
1 楼 ruler_internet 2012-03-01  
为什么不借用对象的属性呢?

相关推荐

Global site tag (gtag.js) - Google Analytics