`
crabdave
  • 浏览: 1277537 次
  • 性别: 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实现Java中的Map对象功能的实例详解

    javascript 自定义对象实现Java中的Map对象功能 Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象。 这里我创建一个自定义对象,这个对象内包含一个数组来存储数据...

    JS自定义对象实现Java中Map对象功能的方法

    本文实例讲述了JS自定义对象实现Java中Map对象功能的方法。分享给大家供大家参考。具体分析如下: Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象。 这里我创建一...

    javascript设计模式之对象工厂函数与构造函数详解

    然而,除了这两种常用的对象创建方式,JavaScript还提供了其他方法创建对象。1).使用工厂函数创建对象我们可以编写一个函数,此函数的功能就是创建对象,可将其. 概述 使用对象字面量,或者向空对象中动态地添加新...

    ArcGis javascript中文帮助文档+源码

    如果你是刚开始学习,可以学习到如何使用API来创建JavaScript地图或任务。 你也可以看一看案例。许多完整小案例,每个小案例可以直接运行显示,有利于你对代码的了解和开发。 也可以参考ArcGIS JavaScript 中文文档,...

    在JavaScript中操作数组之map()方法的使用

    JavaScript 数组map()方法创建一个新的数组使用调用此数组中的每个元素上所提供的函数的结果。 语法 array.map(callback[, thisObject]); 下面是参数的详细信息: callback : 从当前的元素函数产生新的数组的元素...

    JavaScript内核系列

    动态性是指,在一个Javascript对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可,如下例: Js代码 1. //定义一个对象 2. var obj = new Object(); 3. //动态创建...

    Leaflet 插件,可沿路径 创建具有增量测量的折线。(又名尺子)_JavaScript_代码_相关文件_下载

    您只需使用配置对象向地图添加一个实例: 包括脚本和css map.addControl(新 L.Control.LinearMeasurement({ unitSystem:'帝国', 颜色:'#FF0080', 类型:'线' })); 可以扩展插件来处理一些内部事件: ...

    你应该了解的JavaScript Array.map()五种用途小结

    .map() 通过指定函数调用一个数组中每一项元素,来创建一个新数组。 .map() 是一种 non-mutating(非变异) 方法,它创建一个新数组,而不是只对调用数组进行更改的 mutating(变异) 方法。这可能很难记住。 语法: ...

    csv-writer.js:用于 Javascript 的超级简单 CSV 编写器。 将对象映射到 CSV

    csv-writer.js用于 Javascript 的超级简单 CSV 编写器一个简单的库,用于从 javascript 对象生成符合 RFC 4180 的 CSV 文件。 这是我不敢相信的界面还不存在。 ##用法只需包括 [removed][removed]然后创建一个...

    javascript-cheatsheet:了解JavaScript的基本术语,概念和语法

    :fire: JavaScript备忘单 :world_map: 这是JavaScript基本概念的备忘单。 开始学习JavaScript的基本概念,语法,术语和不同的构造。 奖励:第14节的单页DOM API速查表 想正确学习JavaScript吗? iLoveCoding Pro...

    javascript面向对象之二 命名空间

    //这样就创建成功了命名空间:java.util //我们可以在java.util下面加类(函数),属性,或对象 java.util.HashMap = function() { this.ShowMessage = function() { alert&#40;“java.util.HashMap”&#41;; } } var ...

    Coffeescript中文手册

    Map 25 筛选 26 包含 27 属性迭代 28 Min/Max 28 多个参数 29 And/or 29 解构赋值 30 其他类库 30 私有变量 31 CoffeeScript的自动编译 32 Cake 32 Server端的支持 35 创建应用程序 36 结构 & CommonJS 36 导入文件 ...

    DWR开发包常规客户端服务器端面向对象编程

    -- 通过NEW创建对象 --&gt; &lt;create creator="new" javascript="JDate"&gt; &lt;param name="class" value="java.util.Date"/&gt; &lt;!-- 通过Spring反射对象 --&gt; &lt;create creator="spring" javascript="TestService"&gt; ...

    Map与WeakMap类型在JavaScript中的使用详解

    map类型特点与创建方法: &lt;!DOCTYPE html&gt; &lt;html lang=en&gt; &lt;head&gt; &lt;meta charset=UTF-8&gt; &lt;title&gt;Document&lt;/title&gt; &lt;meta name=viewport content=width=device-width,...

    JavaScript 引用类型实例详解【数组、对象、严格模式等】

    本文实例讲述了JavaScript 引用类型。分享给大家供大家参考,具体如下: 数组 在ECMAScript中数组是非常常用的引用类型 ECMAScript所定义的数组和其他语言中的数组有着很大的区别 数组也是一种对象 创建数组 //方法...

    java服务器高德地图API

    针对web端会使用到的高德地图API&lt;script type="text/javascript"&gt; function initialize() { var mapObj; //初始化地图对象,加载地图 mapObj =new AMap.Map("container"); var longitude=${business.longitude}...

    js_game-snake

    面向对象案例:贪吃蛇 ...render 随机创建一个食物对象, 并渲染到map上 创建Food构造函数, 并设置属性 var _position = "absolute"; var elements = []; // 保存之前创建的食物div function Food(options) { options =

    ES6中Symbol、Set和Map用法详解

    它是 JavaScript 语言的第七种数据类型,前六种分别是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object); 2.Symbol 值通过Symbol函数生成,可以作为对象的属性名使用,保证...

    seat-map.js:互动式座位图

    在构建系统中,导入createSeatMap工厂功能方法和venues对象,该对象只是场所名称的关键值对。 import { createSeatMap , venues } from '@tixel/seat-map' window . seatMapJS = { venues : venues , create : ...

    ES6新增数据类型set和map

    JavaScript有一种数据类型叫对象,js中的数组算是一种新的类型,是一种特殊的对象,也是一种有序的对象,只是数据的组合方式不一样。 数据结构:数据是具体的东西,类型是一个范围,结构(集合)是数据的不同组合...

Global site tag (gtag.js) - Google Analytics