JavaScript实现键值对数组,类似Java语言中的Map

闲来无事,做个JavaScript练习题,结果因为Java语言使用的时间久了,就像强迫使用Java的逻辑去写JavaScript代码。然而,JavaScript却没有HashMap,瞬间感觉Java不愧是高级语言。
为了成全自己的强迫症,简单实现个Map用着嗨一下。

废话就不多说了,贴出来我的代码,大家给指导指导。

/**
     * 自定义键值对字典对象
     * @constructor
     */
    function Dictionary() {
        /**
         * 键值对的键列表,存储键元素
         * @type {Array}
         */
        var keys = new Array();
        /**
         * 键值对的值列表,存储值元素
         * @type {Array}
         */
        var values = new Array();

        /**
         * 为键值对添加一个元素
         * @param key 元素键(具有唯一性)
         * @param value 元素的值
         */
        this.put = function (key, value) {
            if (contains(key)) { // 已存在键为key的元素
                var index = this.indexOfKey(key);
                values[index] = value; // 为对应的值重新赋值
            } else { // 不存在键为key的元素,需要为键值对添加新的元素
                keys.push(key); // 添加key到键列表的末尾
                values.push(value); // 添加value到值列表的末尾
            }
        };

        /**
         * 获取key对应的value
         * @param key
         * @returns {*} 返回value值,查不到返回null
         */
        this.get = function (key) {
            if (contains(key)) { // 存在键为key的元素
                var index = this.indexOfKey(key);
                return values[index]; // 返回key对应的value
            } else {
                return null;
            }
        };

        /**
         * 获取key数组
         * @returns {Array}
         */
        this.getKeyArray = function () {
            return keys;
        };

        /**
         * 获取vakue数组
         * @returns {Array}
         */
        this.getValueArray = function () {
            return values;
        };

        /**
         * 返回键值对的长度
         * @returns {Number}
         */
        this.size = function () {
            return keys.length;
        };

        /**
         * 检查是否包含某个key的元素
         * @param key
         * @returns {boolean} 包含返回true
         */
        this.contains = function (key) {
            return (keys.indexOf(key) > -1);
        };

        /**
         * 获取key列表对应元素的下表
         * @param key key
         * @returns {number} 下标位置,查不到返回-1
         */
        this.indexOfKey = function (key) {
            return keys.indexOf(key);
        };

    }

以上,本人技术 有限,忘大神路过给指点一二。谢谢!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值