zoukankan      html  css  js  c++  java
  • JS-Map

      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.removeByKey = 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     //删除指定VALUE的元素,成功返回True,失败返回False
     68     this.removeByValue = function(_value) {//removeByValueAndKey
     69         var bln = false;
     70         try {
     71             for (i = 0; i < this.elements.length; i++) {
     72                 if (this.elements[i].value == _value) {
     73                     this.elements.splice(i, 1);
     74                     return true;
     75                 }
     76             }
     77         } catch (e) {
     78             bln = false;
     79         }
     80         return bln;
     81     };
     82     
     83     //删除指定VALUE的元素,成功返回True,失败返回False
     84     this.removeByValueAndKey = function(_key,_value) {
     85         var bln = false;
     86         try {
     87             for (i = 0; i < this.elements.length; i++) {
     88                 if (this.elements[i].value == _value && this.elements[i].key == _key) {
     89                     this.elements.splice(i, 1);
     90                     return true;
     91                 }
     92             }
     93         } catch (e) {
     94             bln = false;
     95         }
     96         return bln;
     97     };
     98 
     99     //获取指定KEY的元素值VALUE,失败返回NULL
    100     this.get = function(_key) {
    101         try {
    102             for (i = 0; i < this.elements.length; i++) {
    103                 if (this.elements[i].key == _key) {
    104                     return this.elements[i].value;
    105                 }
    106             }
    107         } catch (e) {
    108             return false;
    109         }
    110         return false;
    111     };
    112 
    113     //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
    114     this.element = function(_index) {
    115         if (_index < 0 || _index >= this.elements.length) {
    116             return null;
    117         }
    118         return this.elements[_index];
    119     };
    120 
    121     //判断MAP中是否含有指定KEY的元素
    122     this.containsKey = function(_key) {
    123         var bln = false;
    124         try {
    125             for (i = 0; i < this.elements.length; i++) {
    126                 if (this.elements[i].key == _key) {
    127                     bln = true;
    128                 }
    129             }
    130         } catch (e) {
    131             bln = false;
    132         }
    133         return bln;
    134     };
    135 
    136     //判断MAP中是否含有指定VALUE的元素
    137     this.containsValue = function(_value) {
    138         var bln = false;
    139         try {
    140             for (i = 0; i < this.elements.length; i++) {
    141                 if (this.elements[i].value == _value) {
    142                     bln = true;
    143                 }
    144             }
    145         } catch (e) {
    146             bln = false;
    147         }
    148         return bln;
    149     };
    150     
    151     //判断MAP中是否含有指定VALUE的元素
    152     this.containsObj = function(_key,_value) {
    153         var bln = false;
    154         try {
    155             for (i = 0; i < this.elements.length; i++) {
    156                 if (this.elements[i].value == _value && this.elements[i].key == _key) {
    157                     bln = true;
    158                 }
    159             }
    160         } catch (e) {
    161             bln = false;
    162         }
    163         return bln;
    164     };
    165 
    166     //获取MAP中所有VALUE的数组(ARRAY)
    167     this.values = function() {
    168         var arr = new Array();
    169         for (i = 0; i < this.elements.length; i++) {
    170             arr.push(this.elements[i].value);
    171         }
    172         return arr;
    173     };
    174     
    175     //获取MAP中所有VALUE的数组(ARRAY)
    176     this.valuesByKey = function(_key) {
    177         var arr = new Array();
    178         for (i = 0; i < this.elements.length; i++) {
    179             if (this.elements[i].key == _key) {
    180                 arr.push(this.elements[i].value);
    181             }
    182         }
    183         return arr;
    184     };
    185 
    186     //获取MAP中所有KEY的数组(ARRAY)
    187     this.keys = function() {
    188         var arr = new Array();
    189         for (i = 0; i < this.elements.length; i++) {
    190             arr.push(this.elements[i].key);
    191         }
    192         return arr;
    193     };
    194     
    195     //获取key通过value
    196     this.keysByValue = function(_value) {
    197         var arr = new Array();
    198         for (i = 0; i < this.elements.length; i++) {
    199             if(_value == this.elements[i].value){
    200                 arr.push(this.elements[i].key);
    201             }
    202         }
    203         return arr;
    204     };
    205     
    206     //获取MAP中所有KEY的数组(ARRAY)
    207     this.keysRemoveDuplicate = function() {
    208         var arr = new Array();
    209         for (i = 0; i < this.elements.length; i++) {
    210             var flag = true;
    211             for(var j=0;j<arr.length;j++){
    212                 if(arr[j] == this.elements[i].key){
    213                     flag = false;
    214                     break;
    215                 } 
    216             }
    217             if(flag){
    218                 arr.push(this.elements[i].key);
    219             }
    220         }
    221         return arr;
    222     };
    223 }
  • 相关阅读:
    IoC容器设计
    乐观锁(Optimistic Lock)
    file,path,uri互相转换
    QGraphicsView的paintEvent双缓存绘画
    简单的串口通信程序控制光源
    Qt--QMdiArea和QMdiSubWindow的基本用法
    Qt--支持鼠标拖动来移动内容的QScrollArea视窗
    快速排序算法记录
    结构体在内存中的对齐规则
    求N个数的数组中第K大的数的值
  • 原文地址:https://www.cnblogs.com/studyshufei/p/8540840.html
Copyright © 2011-2022 走看看