• JS 有序键值Map对的实现


    构造:

    function Map() {
      this.keys = new Array();
      this.data = new Array();
      //添加键值对
      this.set = function (key, value) {
        if (this.data[key] == null) {//如键不存在则身【键】数组添加键名
          this.keys.push(value);
        }
        this.data[key] = value;//给键赋值
      };
      //获取键对应的值
      this.get = function (key) {
        return this.data[key];
      };
      //去除键值,(去除键数据中的键名及对应的值)
      this.remove = function (key) {
        this.keys.remove(key);
        this.data[key] = null;
      };
      //判断键值元素是否为空
      this.isEmpty = function () {
        return this.keys.length == 0;
      };
      //获取键值元素大小
      this.size = function () {
        return this.keys.length;
      };
      //遍历Map,执行处理函数. 回调函数 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);   
        }   
      };  
      //获取键值数组,返回键值对象{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;     
      }; 
      //重写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","value1");   
        m.put("key2","value2");   
        m.put("key3","value3");   
        alert("init:"+m);   
           
        m.put("key1","value4");   
        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);   
    }  
  • 相关阅读:
    基于角色的权限控制
    C#中实现拖动无边框窗体Form
    C#加密方法汇总
    监控 SQL Server (2005/2008) 的运行状况来自微软TetchNet
    经典SQL语句集锦【转】
    Asp.net+Xml+js实现无线级下拉菜单
    CuteEditor5.0的安装及它与Ajax.net配合无刷新操作数据库!
    sql 提取数字、字母、汉字
    c# 判断远程文件是否存在
    c#采集网页用得几个函数
  • 原文地址:https://www.cnblogs.com/hopedilei/p/4973559.html
Copyright © 2020-2023  润新知