`

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>

 

分享到:
评论

相关推荐

    在JavaScript中实现map对象

    ### 在JavaScript中实现Map对象 #### 一、引言 在JavaScript中,原生支持了多种数据结构,其中数组(Array)是最为常见的数据结构之一。然而,在某些应用场景下,我们可能需要一种能够根据键(key)快速查找值(value)的...

    Hash-table-and-its-application.zip_Key-value_Table

    例如,在JavaScript的`Object`类型中,键值对就是其核心特性,允许开发者以键来访问和修改对象的属性。 哈希表的应用广泛,其中包括: 1. 数据库索引:数据库系统利用哈希表加速对记录的查找,提高查询效率。 2. ...

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

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

    前端开源库-map-or-similar

    5. **方法兼容性**:为了保持与原生Map对象的兼容性,map-or-similar可能会包含如`set(key, value)`, `get(key)`, `has(key)`, `delete(key)`等方法。 6. **性能优化**:考虑到性能,这个库可能采用了高效的算法来...

    JavaScript实现Array(数组)和Map

    与数组不同,Map的键是有序的,并且提供了几个方便的方法,如set(key, value)用于设置键值对,get(key)用于获取键对应的值,delete(key)用于删除键值对,size属性用于获取Map中键值对的数量。`map.js` 文件可能会...

    js循环map 获取所有的key和value的实现代码(json)

    本文将详细介绍如何在JavaScript中使用循环来获取Map的所有key和value,并提供两种实现方法。 **方法一:使用for...in循环** 在JavaScript中,`for...in`循环通常用于遍历对象的可枚举属性。尽管Map不是直接支持`...

    js获取对象,数组所有属性键值(key)和对应值(value)的方法示例

    在JavaScript编程中,获取对象和数组的属性键值(key)和对应值(value)是一项基本操作。本文将详细介绍如何实现这一功能,并提供相应的代码示例。 首先,我们需要理解JavaScript中的对象和数组。对象是一种键值对...

    利用js实现Map

    本文将深入探讨`Map`对象的原理、特性以及如何通过JavaScript实现`Map`的相关功能,并通过实例进行演示。 ### 1. Map的基本用法 创建一个`Map`对象非常简单,可以通过传入一个数组的数组来初始化,每个内部数组...

    用javaScript实现的map,经过测试,很好用

    在JavaScript的ES6版本中引入了Map对象,以弥补对象作为哈希表的一些不足,如对象的键总是字符串或者Symbol类型。本文将深入探讨如何使用JavaScript实现Map,以及它的特性和优势。 首先,创建一个Map对象非常简单,...

    javascript的Map实现(高性能)

    1. **字符串化键值对**:将键值对转换为JSON字符串,如`JSON.stringify([key, value])`,这样可以节省内存,因为字符串是不可变的,避免了哈希表中的频繁复制。 2. **高效的查找和更新**:通过字符串的索引定位键值...

    js仿java的map对象

    在JavaScript中,尽管原生没有提供与Java完全相同的Map对象,但可以通过自定义对象或使用ES6提供的Map数据结构来实现类似的功能。本篇将详细探讨如何在JavaScript中模仿Java的Map对象,以及ES6 Map的数据结构和用法...

    javascript(map功能)

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

    javascript 中Map的使用

    3. Map的深拷贝:利用Map可以实现对象的深拷贝,通过递归将对象的所有属性转换为键值对存入Map,然后根据Map再构建新对象。 在实际开发中,Map常用于: - 保存索引映射关系,比如数组元素与其索引的对应。 - 维护多...

    js 实现map的方式

    JavaScript中的Map对象是一种数据结构,它允许我们存储键值对,并且键可以是任何类型,而不仅仅是字符串。Map对象在JavaScript ES6版本中被引入,为处理复杂的数据关联提供了更强大的工具,尤其对于那些需要使用非...

    Javascript实现和操作HashMap

    虽然JavaScript原生的`Map`对象提供了类似的功能,但在某些场景下,开发者可能需要自定义HashMap来满足特定的需求,例如优化性能或者实现特定的算法。本篇文章将深入探讨如何在JavaScript中实现HashMap以及如何进行...

    Javascript 中类似Map集合的实现键值对

    在JavaScript中,`Map`集合是一个内置的数据结构,用于存储键值对,它与对象不同,因为对象的键必须是字符串或符号,而`Map`则可以使用任何可哈希的值作为键。这篇博客文章可能探讨了如何通过自定义方式实现一个类似...

    js实现map用法

    JavaScript中的Map对象是ES6引入的一种新的数据结构,它提供了键值对的存储方式,与对象类似但有显著区别。Map的主要优势在于键可以是任意类型,而不仅仅是字符串,这使得它在处理复杂数据结构时非常有用。在本文中...

    JavaScript实现Java中Map容器的方法

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

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

    总结来说,JavaScript中的HashMap实现需要注意对象原型链的影响,使用`hasOwnProperty`来检查对象自身属性,以及通过创建无原型的裸对象来避免潜在问题。通过这种方式,可以创建一个更高效、更可控的键值对存储结构...

    javascript实现Java中的Map对象功能的实例详解

    在JavaScript中,没有内置的Map对象,但可以通过自定义对象的方式来模拟实现类似Java中的Map功能。这个自定义的Map对象可以存储键值对,并提供类似于Java Map接口的方法,如put、get、remove、clear、contains以及...

Global site tag (gtag.js) - Google Analytics