`
crabdave
  • 浏览: 1294678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript创建Map对象(转)

 
阅读更多

JavaScript创建Map对象(转)

 

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

 

/*  
 * MAP对象,实现MAP功能  
 *  
 * 接口:  
 * size()     获取MAP元素个数  
 * isEmpty()    判断MAP是否为空  
 * clear()     删除MAP所有元素  
 * put(key, value)   向MAP中增加元素(key, value)   
 * remove(key)    删除指定KEY的元素,成功返回True,失败返回False  
 * get(key)    获取指定KEY的元素值VALUE,失败返回NULL  
 * element(index)   获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL  
 * containsKey(key)  判断MAP中是否含有指定KEY的元素  
 * containsValue(value) 判断MAP中是否含有指定VALUE的元素  
 * values()    获取MAP中所有VALUE的数组(ARRAY)  
 * keys()     获取MAP中所有KEY的数组(ARRAY)  
 *  
 * 例子:  
 * var map = new Map();  
 *  
 * map.put("key", "value");  
 * var val = map.get("key")  
 * ……  
 *  
 */   
function Map() {   
    this.elements = new Array();   
     
    //获取MAP元素个数   
    this.size = function() {   
        return this.elements.length;   
    }   
     
    //判断MAP是否为空   
    this.isEmpty = function() {   
        return(this.elements.length < 1);   
    }   
     
    //删除MAP所有元素   
    this.clear = function() {   
        this.elements = new Array();   
    }   
     
    //向MAP中增加元素(key, value)    
    this.put = function(_key, _value) {   
        this.elements.push( {   
            key : _key,   
            value : _value   
        });   
    }   
     
    //删除指定KEY的元素,成功返回True,失败返回False   
    this.remove = function(_key) {   
        var bln = false;   
        try{   
            for(i = 0; i < this.elements.length; i++) {   
                if(this.elements[i].key == _key) {   
                    this.elements.splice(i, 1);   
                    return true;   
                }   
            }   
        } catch(e) {   
            bln = false;   
        }   
        return bln;   
    }   
     
    //获取指定KEY的元素值VALUE,失败返回NULL   
    this.get = function(_key) {   
        try{   
            for(i = 0; i < this.elements.length; i++) {   
                if(this.elements[i].key == _key) {   
                    return this.elements[i].value;   
                }   
            }   
        } catch(e) {   
            return null;   
        }   
    }   
     
    //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL   
    this.element = function(_index) {   
        if(_index < 0 || _index >= this.elements.length) {   
            return null;   
        }   
        return this.elements[_index];   
    }   
     
    //判断MAP中是否含有指定KEY的元素   
    this.containsKey = function(_key) {   
        varbln = false;   
        try{   
            for(i = 0; i < this.elements.length; i++) {   
                if(this.elements[i].key == _key) {   
                    bln = true;   
                }   
            }   
        } catch(e) {   
            bln = false;   
        }   
        return bln;   
    }   
     
    //判断MAP中是否含有指定VALUE的元素   
    this.containsValue = function(_value) {   
        var bln = false;   
        try{   
            for(i = 0; i < this.elements.length; i++) {   
                if(this.elements[i].value == _value) {   
                    bln = true;   
                }   
            }   
        } catch(e) {   
            bln = false;   
        }   
        return bln;   
    }   
     
    //获取MAP中所有VALUE的数组(ARRAY)   
    this.values = function() {   
        var arr = new Array();   
        for(i = 0; i < this.elements.length; i++) {   
            arr.push(this.elements[i].value);   
        }   
        return arr;   
    }   
     
    //获取MAP中所有KEY的数组(ARRAY)   
    this.keys = function() {   
        var arr = new Array();   
        for(i = 0; i < this.elements.length; i++) {   
            arr.push(this.elements[i].key);   
        }   
        return arr;   
    }   
}   

  var map = new Map();  
   
  map.put("key1", "value1");  
  map.put("key2", "value2");  
  map.put("key3", "value3");  

  
  //var val = map.get("key1");
//	var val = map.containsKey("key1");
//	var val = map.element(2).value;

    var arr=map.keys();
	for(var i=0;i<arr.length;i++){
		alert(map.get(arr[i]));
	}
//  alert(val);

 

分享到:
评论
1 楼 lixuansong 2016-12-28  
put()方法调用前必须先手动调用remove(),不然不会实现put的值覆盖原有的value

相关推荐

    在JavaScript中实现map对象

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

    对象转换成JSON和Map

    - **自定义转换**:如果你的类有getters和setters,你可以使用Java反射API来自动提取属性并创建Map。例如: ```java Field[] fields = person.getClass().getDeclaredFields(); Map, Object&gt; map = new HashMap...

    javascript 中Map的使用

    JavaScript中的Map对象是ES6引入的一种新的数据结构,它提供了关联键值对的存储方式,与传统的对象不同,Map的键可以是任何类型的值,包括基本类型、对象甚至是其他Map实例。这一特性使得Map在处理大量复杂数据或者...

    JavaScript核心对象参考手册

    2. **对象创建与原型Prototype**: JavaScript使用`new`关键字创建对象实例,原型链允许对象间共享属性和方法,`__proto__`或`prototype`属性是理解这一机制的关键。 3. **函数对象Function**: 在JavaScript中,函数...

    JavaScript实现Array(数组)和Map

    `object.js` 文件可能涉及到的是JavaScript对象的操作,虽然不是直接与Array或Map相关,但它们在JavaScript中是重要的数据结构。JavaScript对象是一种键值对的集合,键通常是字符串,但也可以是符号(Symbol)。与...

    javascript中数组、对象

    在JavaScript中,数组和对象是两种非常基础且重要的数据结构,它们被广泛应用于各种场景,如数据存储、逻辑处理和对象表示。这篇文章将深入探讨这两种数据类型,以及相关的操作和工具。 **一、数组** 数组在...

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

    首先,创建一个Map对象非常简单,可以通过调用Map构造函数并传入可迭代对象(如数组)来初始化: ```javascript let map = new Map([[1, 'one'], [2, 'two']]); ``` Map对象提供了多种方法来操作和访问数据: 1. ...

    JavaScript 实现Array(数组)和Map

    在JavaScript中,对象的键默认是字符串,而Map可以使用任何可哈希的值作为键,包括对象、数字、字符串等。Map的一些主要方法包括set、get、has、delete、clear等。在`map.js`文件中,可能会有对Map的实现或扩展,...

    Javascript API for ArcGIS Server对象模型图.rar

    通过创建Map对象并添加图层,可以构建基本的地图界面。 3. **Layer对象**:Layer对象代表地图中的一个图层,它可以是动态图层、Tiled Map Service、Feature Layer或KML图层等。Layer对象提供了显示、隐藏、查询和...

    map-example.zip_html5_javascript_map

    在本项目中,“map-example.zip_html5_javascript_map”是...通过阅读和理解项目的源码,开发者可以学习到地图开发的基础知识,包括API的使用、地图对象的创建和用户交互的处理,这些都是现代Web开发中不可或缺的技能。

    JavaScript Array map.docx

    在JavaScript中,`Array.prototype.map()` 是一种非常实用的方法,用于创建一个新数组,其结果是调用提供的函数处理原数组的每一个元素。此方法不改变原数组,而是返回一个新的数组。 #### 二、基本用法与定义 `...

    js 实现map的方式

    这段代码展示了如何创建Map对象、设置键值对、获取值、检查键的存在以及删除键值对。通过分析和理解`jsMap.js`的代码,你可以深入理解Map对象的用法和其在实际开发中的应用场景,如存储和查找关联数据、处理复杂数据...

    json 转换为map

    Gson库提供了一个`Gson.fromJson()`方法,能够将JSON字符串解析成一个Map对象。这个过程涉及以下几个步骤: 1. **创建Gson对象**:首先,我们需要创建一个`Gson`实例,这是整个转换的核心。 ```java Gson gson = ...

    js仿java的map对象

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

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

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

    即用即查JavaScript核心对象参考手册:JavaScript

    `Object.create()`用于创建新对象,`Object.keys()`和`Object.values()`返回对象的键和值数组,`Object.getOwnPropertyDescriptor()`获取对象属性的详细信息。 3. **数组Array**: 数组是一种特殊类型的对象,可以...

    利用js实现Map

    **JavaScript Map对象详解与实践应用** 在JavaScript的世界里,`Map`对象是一个强大的数据结构,它允许我们存储键值对,且键可以是任意类型,而不仅仅是字符串。这与原生的`Object`有着本质的区别,`Object`的键...

    js遍历map javaScript遍历map的简单实现

    示例中创建了一个Map对象,然后通过for...in循环来遍历该对象的键值对,并打印输出。具体代码如下: ```javascript var map = { "name": "华仔", "realname": "刘德华" }; for (var key in map) { console.log(...

Global site tag (gtag.js) - Google Analytics