js 实现map功能

转载 2015年07月07日 21:51:22
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
 </head>

 <body>
  <input type="button" value="test" onclick="testMap()"> 
 </body>
</html>
<script>
Array.prototype.remove = function(s) {   
    for (var i = 0; i < this.length; i++) {   
        if (s == this[i]){   
            this.splice(i, 1);
            break;
        }
    }   
}   

/**  
 * Simple Map  
 *   
 *   
 * var m = new Map();  
 * m.put('key','value');  
 * ...  
 * var s = "";  
 * m.each(function(key,value,index){  
 *      s += index+":"+ key+"="+value+"/n";  
 * });  
 * alert(s);  
 *   
 * @author dewitt  
 * @date 2008-05-24  
 */  
function Map() {   
    /** 存放键的数组(遍历用到) */  
    this.keys = new Array();   
    /** 存放数据 */  
    this.data = new Object();   

    /**  
     * 放入一个键值对  
     * @param {String} key  
     * @param {Object} value  
     */  
    this.put = function(key, value) {   
        if(this.data[key] == null){   
            this.keys.push(key);   
        }   
        this.data[key] = value;   
    };   

    /**  
     * 获取某键对应的值  
     * @param {String} key  
     * @return {Object} value  
     */  
    this.get = function(key) {   
        return this.data[key];   
    };   

    /**  
     * 删除一个键值对  
     * @param {String} key  
     */  
    this.remove = function(key) {   
        this.keys.remove(key);   
        this.data[key] = null;   
    };   

    /**  
     * 遍历Map,执行处理函数  
     *   
     * @param {Function} 回调函数 function(key,value,index){..}  
     */  
    this.each = function(fn){   
        if(typeof fn != 'function'){   
            return;   
        }   
        var len = this.keys.length;   
        for(var i=0;i<len;i++){   
            var k = this.keys[i];   
            fn(k,this.data[k],i);   
        }   
    };   

    /**  
     * 获取键值数组(类似Java的entrySet())  
     * @return 键值对象{key,value}的数组  
     */  
    this.entrys = function() {   
        var len = this.keys.length;   
        var entrys = new Array(len);   
        for (var i = 0; i < len; i++) {   
            entrys[i] = {   
                key : this.keys[i],   
                value : this.data[i]   
            };   
        }   
        return entrys;   
    };   

    /**  
     * 判断Map是否为空  
     */  
    this.isEmpty = function() {   
        return this.keys.length == 0;   
    };   

    /**  
     * 获取键值对数量  
     */  
    this.size = function(){   
        return this.keys.length;   
    };   

    /**  
     * 重写toString   
     */  
    this.toString = function(){   
        var s = "{";   
        for(var i=0;i<this.keys.length;i++,s+=','){   
            var k = this.keys[i];   
            s += k+"="+this.data[k];   
        }   
        s+="}";   
        return s;   
    };   
}   


function testMap(){   
    var m = new Map();   
    m.put('key1','Comtop');   
    m.put('key2','南方电网');   
    m.put('key3','景新花园');   
    alert("init:"+m);   

    m.put('key1','康拓普');   
    alert("set key1:"+m);   

    m.remove("key2");   
    alert("remove key2: "+m);   

    var s ="";   
    m.each(function(key,value,index){   
        s += index+":"+ key+"="+value+"/n";   
    });   
    alert(s);   
}  
</script>

相关文章推荐

js实现map功能

  • 2017年03月17日 10:21
  • 1KB
  • 下载

js模仿java的Map集合,实现功能

  • 2014年03月21日 12:51
  • 5KB
  • 下载

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

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

js模仿java的Map集合,实现功能

java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构...

js实现类似于JAVA的Map的封装

  • 2014年09月26日 09:13
  • 3KB
  • 下载

高效的运用MAP类实现“比较”的功能

问题:A表有一个字段mm唯一确定一条数据而且也有字段cc有数据,B表也存在mm字段也有cc字段,但是没有数据,目的:希望将B表的cc字段和A表的cc字段同步   策略一: 查询B表的数据,逐一遍...
  • hbiao68
  • hbiao68
  • 2013年12月04日 09:58
  • 310

js 实现map的方式

  • 2011年09月02日 23:22
  • 796B
  • 下载

c++中map容器简单功能实现测试附带结构体指针测试

// TestingandTobe.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using names...
  • ghevinn
  • ghevinn
  • 2012年08月20日 11:32
  • 1823

UE4高级功能-初探超大无缝map的实现LevelStream

[摘要:UE4高等功效--初探超大无缝舆图的完成LevelStream 媒介 好吧,此次总结的照样UE4,正在那里要背CE3的同伙们讲一声丰,由于自己火品有限,对CE3的索求进修堕入了一个非] UE4...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js 实现map功能
举报原因:
原因补充:

(最多只允许输入30个字)