zoukankan      html  css  js  c++  java
  • js对Map的操作(可作为工具类)

    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','测试2'); m.put('key3','测试3'); 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); }
  • 相关阅读:
    MYSQL数据库基础
    MSYQL操数据DML
    MYSQL外键约束
    MYSQL多表查询
    MYSQL结果排序、分页查询、聚合函数
    未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项”的解决方法
    由于扩展配置问题而无法提供您请求的页面。
    JS中的prototype(转载)
    mvc表单如何绑定bool类型的属性或变量
    使用c#正则验证关键字并找出匹配项
  • 原文地址:https://www.cnblogs.com/yydxh/p/15136290.html
Copyright © 2011-2022 走看看