JS Map 和 List 的简单实现

来源:互联网 发布:mac redis可视化工具 编辑:程序博客网 时间:2024/05/19 01:10

转自     http://www.cnblogs.com/fengys-moving/archive/2012/05/27/2520549.html


map

[html] view plain copy
  1. /*  
  2.  * MAP对象,实现MAP功能  
  3.  *  
  4.  * 接口:  
  5.  * size()     获取MAP元素个数  
  6.  * isEmpty()    判断MAP是否为空  
  7.  * clear()     删除MAP所有元素  
  8.  * put(key, value)   向MAP中增加元素(key, value)   
  9.  * remove(key)    删除指定KEY的元素,成功返回True,失败返回False  
  10.  * get(key)    获取指定KEY的元素值VALUE,失败返回NULL  
  11.  * element(index)   获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL  
  12.  * containsKey(key)  判断MAP中是否含有指定KEY的元素  
  13.  * containsValue(value) 判断MAP中是否含有指定VALUE的元素  
  14.  * values()    获取MAP中所有VALUE的数组(ARRAY)  
  15.  * keys()     获取MAP中所有KEY的数组(ARRAY)  
  16.  *  
  17.  * 例子:  
  18.  * var map = new Map();  
  19.  *  
  20.  * map.put("key", "value");  
  21.  * var val = map.get("key")  
  22.  * ……  
  23.  *  
  24.  */  
  25. function Map() {  
  26.     this.elements = new Array();  
  27.   
  28.     //获取MAP元素个数  
  29.     this.size = function() {  
  30.         return this.elements.length;  
  31.     };  
  32.   
  33.     //判断MAP是否为空  
  34.     this.isEmpty = function() {  
  35.         return (this.elements.length < 1);  
  36.     };  
  37.   
  38.     //删除MAP所有元素  
  39.     this.clear = function() {  
  40.         this.elements = new Array();  
  41.     };  
  42.   
  43.     //向MAP中增加元素(key, value)   
  44.     this.put = function(_key, _value) {  
  45.         this.elements.push( {  
  46.             key : _key,  
  47.             value : _value  
  48.         });  
  49.     };  
  50.   
  51.     //删除指定KEY的元素,成功返回True,失败返回False  
  52.     this.remove = function(_key) {  
  53.         var bln = false;  
  54.         try {  
  55.             for (i = 0; i < this.elements.length; i++) {  
  56.                 if (this.elements[i].key == _key) {  
  57.                     this.elements.splice(i, 1);  
  58.                     return true;  
  59.                 }  
  60.             }  
  61.         } catch (e) {  
  62.             bln = false;  
  63.         }  
  64.         return bln;  
  65.     };  
  66.   
  67.     //获取指定KEY的元素值VALUE,失败返回NULL  
  68.     this.get = function(_key) {  
  69.         try {  
  70.             for (i = 0; i < this.elements.length; i++) {  
  71.                 if (this.elements[i].key == _key) {  
  72.                     return this.elements[i].value;  
  73.                 }  
  74.             }  
  75.         } catch (e) {  
  76.             return null;  
  77.         }  
  78.     };  
  79.   
  80.     //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL  
  81.     this.element = function(_index) {  
  82.         if (_index < 0 || _index >= this.elements.length) {  
  83.             return null;  
  84.         }  
  85.         return this.elements[_index];  
  86.     };  
  87.   
  88.     //判断MAP中是否含有指定KEY的元素  
  89.     this.containsKey = function(_key) {  
  90.         var bln = false;  
  91.         try {  
  92.             for (i = 0; i < this.elements.length; i++) {  
  93.                 if (this.elements[i].key == _key) {  
  94.                     bln = true;  
  95.                 }  
  96.             }  
  97.         } catch (e) {  
  98.             bln = false;  
  99.         }  
  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. }  

List

[html] view plain copy
  1. /**  
  2.  * js实现list  
  3.  *   
  4.  */  
  5. function List() {  
  6.     this.value = [];  
  7.   
  8.     /* 添加 */  
  9.     this.add = function(obj) {  
  10.         return this.value.push(obj);  
  11.     };  
  12.   
  13.     /* 大小 */  
  14.     this.size = function() {  
  15.         return this.value.length;  
  16.     };  
  17.   
  18.     /* 返回指定索引的值 */  
  19.     this.get = function(index) {  
  20.         return this.value[index];  
  21.     };  
  22.   
  23.     /* 删除指定索引的值 */  
  24.     this.remove = function(index) {  
  25.         this.value.splice(index,1);  
  26.         return this.value;  
  27.     };  
  28.   
  29.     /* 删除全部值 */  
  30.     this.removeAll = function() {  
  31.         return this.value = [];  
  32.     };  
  33.   
  34.     /* 是否包含某个对象 */  
  35.     this.constains = function(obj) {  
  36.         for ( var i in this.value) {  
  37.             if (obj == this.value[i]) {  
  38.                 return true;  
  39.             } else {  
  40.                 continue;  
  41.             }  
  42.         }  
  43.         return false;  
  44.     };  
  45.       
  46.     /* 是否包含某个对象 */  
  47.     this.getAll = function() {  
  48.         var allInfos = '';  
  49.         for ( var i in this.value) {  
  50.             if(i != (value.length-1)){  
  51.                 allInfos += this.value[i]+",";  
  52.             }else{  
  53.                 allInfos += this.value[i];  
  54.             }  
  55.         }  
  56.         alert(allInfos);  
  57.         return allInfos += this.value[i]+",";;  
  58.     };  
  59.       
  60. }  

0 0