用html自制map集合

懂java的人都知道map集合,是一个非常好用的集合类,它以键值对方式存储,和我们js的json记为相似,但是json添加,查找极为不便。那还不如自己用js制定一个json

  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;
                };
            }

  使用:

 var map;
            $(function(){
                map = new Map();
                 map.put("redirecturl",redire);
            //    map.put("appId",app);
}

 

posted @ 2015-06-30 16:19  红色小宇宙  阅读(809)  评论(0编辑  收藏  举报