zoukankan      html  css  js  c++  java
  • JavaScript创建Map对象(转)

    JavaScript 里面本身没有map对象,用JavaScript的Array来实现Map的数据结构。

    Js代码  收藏代码
    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.         varbln = 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. }     
    136.   
    137.   var map = new Map();    
    138.      
    139.   map.put("key1", "value1");    
    140.   map.put("key2", "value2");    
    141.   map.put("key3", "value3");    
    142.   
    143.     
    144.   //var val = map.get("key1");  
    145. //  var val = map.containsKey("key1");  
    146. //  var val = map.element(2).value;  
    147.   
    148.     var arr=map.keys();  
    149.     for(var i=0;i<arr.length;i++){  
    150.         alert(map.get(arr[i]));  
    151.     }  
    152. //  alert(val);  
  • 相关阅读:
    Chapter 7、面向对象(二)---类 (4th,Mar.)
    Chapter 7、面向对象(一)--- 概述
    值类型,引用类型
    Chapter 6、字符串(二)(1st,Mar.)
    练习:判断字符串“mingrikejijavabu”中,字符“i”出现了几次,并将结果输出。
    函数对象
    顺序容器:双向链表 list
    顺序容器:vector和deque 的程序举栗子
    STL中的 “大”、“小”和 “相等”
    标准模板库STL中常用的算法
  • 原文地址:https://www.cnblogs.com/ranzige/p/3830077.html
Copyright © 2011-2022 走看看