`

JavaScript 实现 Map 对象(Key-Value)

阅读更多
<script language="javascript">
 function HashMap()
 {
     /** Map 大小 **/
     var size = 0;
     /** 对象 **/
     var entry = new Object();
     
     /** 存 **/
     this.put = function (key , value)
     {
         if(!this.containsKey(key))
         {
             size ++ ;
         }
         entry[key] = value;
     }
     
     /** 取 **/
     this.get = function (key)
     {
         if( this.containsKey(key) )
         {
             return entry[key];
         }
         else
         {
             return null;
         }
     }
     
     /** 删除 **/
     this.remove = function ( key )
     {
         if( delete entry[key] )
         {
             size --;
         }
     }
     
     /** 是否包含 Key **/
     this.containsKey = function ( key )
     {
         return (key in entry);
     }
     
     /** 是否包含 Value **/
     this.containsValue = function ( value )
     {
         for(var prop in entry)
         {
             if(entry[prop] == value)
             {
                 return true;
             }
         }
         return false;
     }
     
     /** 所有 Value **/
     this.values = function ()
     {
         var values = new Array(size);
         for(var prop in entry)
         {
             values.push(entry[prop]);
         }
         return values;
     }
     
     /** 所有 Key **/
     this.keys = function ()
     {
         var keys = new Array(size);
         for(var prop in entry)
         {
             keys.push(prop);
         }
         return keys;
     }
     
     /** Map Size **/
     this.size = function ()
     {
         return size;
     }
 }
 
 var map = new HashMap();
 
 /*
 map.put("A","1");
 map.put("B","2");
 map.put("A","5");
 map.put("C","3");
 map.put("A","4");
 */
 
 /*
 alert(map.containsKey("XX"));
 alert(map.size());
 alert(map.get("A"));
 alert(map.get("XX"));
 map.remove("A");
 alert(map.size());
 alert(map.get("A"));
 */
 
 /** 同时也可以把对象作为 Key **/
 /*
 var arrayKey = new Array("1","2","3","4");
 var arrayValue = new Array("A","B","C","D");
 map.put(arrayKey,arrayValue);
 var value = map.get(arrayKey);
 for(var i = 0 ; i < value.length ; i++)
 {
     //alert(value[i]);
 }
 */
 /** 把对象做为Key时 ,自动调用了该对象的 toString() 方法 其实最终还是以String对象为Key**/
 
 /** 如果是自定义对象 那自己得重写 toString() 方法 否则 . 就是下面的结果 **/
 
 function MyObject(name)
 {
     this.name = name;
 }
 
 /**
 function MyObject(name)
 {
     this.name = name;
     
     this.toString = function ()
     {
         return this.name;
     }
 }
 **/
 var object1 = new MyObject("小张");
 var object2 = new MyObject("小名");
 
 map.put(object1,"小张");
 map.put(object2,"小名");
 alert(map.get(object1));
 alert(map.get(object2));
 alert(map.size());
 
 /** 运行结果 小名 小名 size = 1 **/
 
 /** 如果改成复写toString()方法的对象 , 效果就完全不一样了 **/
 
 </script>

 

分享到:
评论

相关推荐

    js 重写Array 类似map key,value结构

    javaScript,重写Array 类似java map的key,value键值对结构

    javascript(map功能)

    * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * get(key) 获取指定KEY的元素值VALUE,失败返回NULL * element(index) 获取指定索引的元素...

    JavaScript实现Java中Map容器的方法

    在Java中,Map是一种集合,用来存储Key-Value键值对的容器.根据键得到值,因此不允许键重复(重复了的覆盖),但允许值重复.JavaScript中的对象特性,就是不允许有相同的属性存在,和Java的Map非常的相似,所以可以利用这个...

    JavaScript判断数组是否存在key的简单实例

    JS中复合数组associative array和对象是等同的,判断一...另外使用key-value pair对复合数组或对象进行loop的时候应该使用: for(var key in ary) { [removed](key+” : “+ary[key]); } 以上这篇JavaScript判断数组是

    js模拟list和map

    javascript 模拟 java中的 List,Map js文件为 js/utils.js IE6.0 测试通过 &lt;br&gt;List: add(var obj) //添加一个元素 remove(var index) //删除一个元素 get(var index) //获取一个元素 remove...

    JavaScript中实现map功能代码分享

     * MAP对象,实现MAP功能   *   * 接口:   * size() 获取MAP元素个数   * isEmpty() 判断MAP是否为空   * clear() 删除MAP所有元素   * put(key, value) 向MAP中增加元素(key, value)   * ...

    javascript实现简单的Map示例介绍

    代码如下: /* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的...

    javascript 实现map集合

    前几天项目上想用map集合一样的东西,简单拿对象拼了一下子,今天闲的慌实现一下 大家不要见笑 代码 var Map = function (){ /************基础变量**************/ var hashmap = {}; var keys = []; var vals...

    map-obj:将对象键和值映射到新对象

    map-obj 将对象键和值映射到新对象安装$ npm install map-obj用法const mapObject = require ( 'map-obj' ) ;const newObject = mapObject ( { foo : 'bar' } , ( key , value ) =&gt; [ value , key ] ) ;//=&gt; {bar: '...

    JavaScript中实现Map的示例代码

    map.entrySet() // 返回Entity[{key,value},{key,value}] map.containsKey('kevin') //返回:false function Map() { this.keys = new Array(); this.data = new Object(); /** * 放入一个键值对 * @par

    Javascript实现的Map集合工具类完整实例

    本文实例讲述了Javascript实现的Map集合工具类。分享给大家供大家参考。具体如下: var Map = function(){ // 构造entry实体 var Entry = function(key, value){ this.key = key; this.value = value; } this...

    javascript模拟map输出与去除重复项的方法

    本文实例讲述了javascript模拟map输出与去除重复项的方法。分享给大家供大家参考。具体方法如下: 1.Javascriptmap输出 function Map(){ // private var obj = {} ;// 空的对象容器,承装键值对 // put 方法 this....

    js-hashmap:javascript hasmap实现

    backbee / js-hashmap JavaScript哈希图实现##安装:bower install bb-js-hashmap --save ##特性: HashMap . length 返回HashMap对象中键/值对的数量。 HashMap . size 返回HashMap对象中键/值对的数量。 ## ...

    详解JavaScript中Hash Map映射结构的实现

    Hash Map通常在JavaScript中作为一个简单的来存储键值对的地方。... Set : function(key,value){this[key] = value}, Get : function(key){return this[key]}, Contains : function(key){return this.Get(key

    meteor-reactive-map:流星的React性数据源

    // Orvar map = new ReactiveMap ( { key1 : 'value1' , key2 : 'value2'} ) ;map . set ( 'key' , 'value' ) ;map . set ( { key1 : 'value1' , key2 : 'value2'} ) ;map . get ( 'key' ) ; // Returns "value".map...

    JS实现的自定义map方法示例

    本文实例讲述了JS实现的自定义map方法。分享给大家供大家参考,具体如下: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;www.jb51.net JS自定义map方法&...

    mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi

    Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。 Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。 GridFS是...

    leetcode-js:使用JavaScript练习解决问题的技能

    哈希表的模式 ...map [ key ] = value 从数组构建邻接表 const graph = new Map ( ) for ( const [ u , v ] of prerequisites ) { if ( graph . has ( v ) ) { graph . get ( v ) . push ( u ) } else

    osm-translate:小型Javascript库,用于翻译Openstreetmap KeyValue

    渗透本地化 正在施工:construction:。 正在使用第一个可用版本...

    javascript-basic:通过https编码课程学习JavaScript编程语言基础资料

    javascript基本 通过编码课程学习JavaScript编程语言基础材料 ... Object adalah tipe data kompleks untuk menyimpan banyak data dengan format key-value. Key pada object harus berupa string.

Global site tag (gtag.js) - Google Analytics