zoukankan      html  css  js  c++  java
  • JS实现的MAP结构数据

    Array.prototype.remove = function(s) {
    for (var i = 0; i < this.length; i++) {
    if (s == this[i])
    this.splice(i, 1);
    }
    }

    /**
    * Simple Map
    *
    *
    * var m = new Map();
    * m.put('key','value');
    * ...
    * var s = "";
    * m.each(function(key,value,index){
    * s += index+":"+ key+"="+value+" ";
    * });
    * 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+" ";
    });
    alert(s);
    }

  • 相关阅读:
    【凡尘】---react-redux---【react】
    React生命周期详解
    写文章很难,ai自动生成文章为你来排忧
    怎么用ai智能写作【智媒ai伪原创】快速写文章?
    给大家介绍个Seo伪原创工具吧,可以免费用的哈
    自媒体文章难写,在线伪原创文章生成就简单了
    内容创作难吗 不妨试试智媒ai伪原创
    Ai伪原创工具,轻松几秒出爆文
    什么AI写作软件靠谱,好用?
    分享个免费伪原创工具 关键词自动生成文章
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6292177.html
Copyright © 2011-2022 走看看