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

来源:互联网 发布:linux和unix的区别 编辑:程序博客网 时间:2024/05/22 15:41
闲来无事,做个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);        };    }

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

0 0
原创粉丝点击