js 模拟Map 最新测试通过

本文深入探讨了Map数据结构的基本概念及其核心方法,包括entry、put、get、remove等操作,详细介绍了如何通过这些方法进行数据存储和检索,并提供了一个自定义Map实现的示例。
/**
 * Map 的方法
 */
Map = function(){
    var mapAddM = {
        /**
         * entry函数
         * @param {Object} key
         * @param {Object} val
         */
        entry: function(key, val){
            this.key = key;
            this.value = val;
        },
        //put方法
        put: function(key, val){
            this.store[this.store.length] = new this.entry(key, val);
        },
        //get方法
        get: function(key){
            for (var i = 0; i < this.store.length; i++) {
                if (this.store[i].key === key) 
                    return this.store[i].value;
            }
        },
        //remove方法
        remove: function(key){
            for (var i = 0; i < this.store.length; i++) {
                this.store[i].key === key && this.store.splice(i, 1);
            }
        },
        //keyset
        keySet: function(){
            var keyset = new Array;
            for (var i = 0; i < this.store.length; i++) 
                keyset.push(this.store[i].key);
            return keyset;
        },
        //valset
        valSet: function(){
            var valSet = new Array;
            for (var i = 0; i < this.store.length; i++) 
                valSet.push(this.store[i].value);
            return valSet;
        },
        //clear
        clear: function(){
            this.store.length = 0;
        },
        //size 
        size: function(){
            return this.store.length;
        },
		/**
		 *  迭代子
		 */
		iterator : function(){
			//TODO 待实现
			var obj = this.keySet();//所有的key集合
			var idx = 0;
			var me = {
				/**
				 * 当前key
				 */
				current : function(){
					return obj[idx-1];
				},
				/**
				 * 第一个key
				 */
				first : function(){
					return obj[0];
				},
				/**
				 * 最后一个key
				 */
				last : function(){
					return obj[obj.length-1];
				},
				/**
				 * 是否还有下一个元素
				 */
				hasNext : function(){
					idx++;
					if(idx > obj.length||null==obj[obj.length-1])return false;
					return true;
				}
			};
			return me;
		}
    };
	for (var method in mapAddM) {
	    this.store = new Array;
		Map.prototype[method] = mapAddM[method];
	}
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值