JS模拟Map(2)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">


        /**
         * Map
         *
         * var map = new Map();
         *
         * map.put(_key,_value);
         *
         * map.get(_key);
         *
         * map.remove(_key);
         *
         * map.clean();
         *
         * map.size();
         *
         * map.contains(_key);
         *
         */


        function Map(){
            this._length = 0;
            this._data = {};


            /*this.get = function(){


             }*/
        }


        /**
         * 根据key获取一个值
         * @param _key
         * @returns {*}
         */
        Map.prototype.get = function(_key){
            //先判断是否存在
            if(this.contains(_key)){
                return this._data[_key+""];
            }
        };


        /**
         * 放一个键值对到map中
         * @param _key
         * @param _value
         */
        Map.prototype.put = function(_key,_value){
            //先判断是否存在
            if(this.contains(_key)){
                //表示更新
                this._data[_key+""] = _value;
            }else{
                //表示新增
                this._data[_key+""] = _value;
                //判断是否添加上
                if(this.contains(_key)){
                    //维护length属性
                    this._length++;
                }
            }
        };
        /**
         * 根据传入的key去上传一个元素
         * @param _key
         */
        Map.prototype.remove = function(_key){
            //先判断是否存在
            if(this.contains(_key)){
                //删除元素
                delete this._data[_key+""];
                //判断是否删除成功
                if(!this.contains(_key)){
                    //维护length
                    this._length--;
                }
            }


        };
        /**
         * 到map中元素的格个数
         * @returns {number}
         */
        Map.prototype.size = function(){
            return this._length;
        };


        /**
         * 清空map
         */
        Map.prototype.clean = function(){
            this._length = 0;
            this._data = {};
        };
        /**
         * 根据传入的key 去判断在map中是否存在
         * @param _key
         * @returns {boolean}
         */
        Map.prototype.contains = function(_key){
            return _key+"" in this._data;
        };


        Map.prototype.each = function(callback){
            for(var _key in this._data){
                callback(_key,this._data[_key]);
            }
        }


        //each使用实例:
        var map = new Map();
        map.put("1","100")
        map.put("2","100")
            map.each(function(_key,_value){
                console.log(_key+":"+_value);
            })
    </script>
</head>
<body>


</body>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值