• JS Map 和 List 的简单实现代码


    javascript中是没有map和list 结构的。

    本篇文章是对在JS中Map和List的简单实现代码进行了详细的分析介绍,需要的朋友参考下

    代码如下:

    /*
     * MAP对象,实现MAP功能
     *
     * 接口:
     * size()     获取MAP元素个数
     * isEmpty()    判断MAP是否为空
     * clear()     删除MAP所有元素
     * put(key, value)   向MAP中增加元素(key, value) 
     * remove(key)    删除指定KEY的元素,成功返回True,失败返回False
     * get(key)    获取指定KEY的元素值VALUE,失败返回NULL
     * element(index)   获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
     * containsKey(key)  判断MAP中是否含有指定KEY的元素
     * containsValue(value) 判断MAP中是否含有指定VALUE的元素
     * values()    获取MAP中所有VALUE的数组(ARRAY)
     * keys()     获取MAP中所有KEY的数组(ARRAY)
     *
     * 例子:
     * var map = new Map();
     *
     * map.put("key", "value");
     * var val = map.get("key")
     * ……
     *
     */
    function Map() {
        this.elements = new Array();
        //获取MAP元素个数
        this.size = function() {
            return this.elements.length;
        };
        //判断MAP是否为空
        this.isEmpty = function() {
            return (this.elements.length < 1);
        };
        //删除MAP所有元素
        this.clear = function() {
            this.elements = new Array();
        };
        //向MAP中增加元素(key, value) 
        this.put = function(_key, _value) {
            this.elements.push( {
                key : _key,
                value : _value
            });
        };
        //删除指定KEY的元素,成功返回True,失败返回False
        this.remove = function(_key) {
            var bln = false;
            try {
                for (i = 0; i < this.elements.length; i++) {
                    if (this.elements[i].key == _key) {
                        this.elements.splice(i, 1);
                        return true;
                    }
                }
            } catch (e) {
                bln = false;
            }
            return bln;
        };
        //获取指定KEY的元素值VALUE,失败返回NULL
        this.get = function(_key) {
            try {
                for (i = 0; i < this.elements.length; i++) {
                    if (this.elements[i].key == _key) {
                        return this.elements[i].value;
                    }
                }
            } catch (e) {
                return null;
            }
        };
        //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
        this.element = function(_index) {
            if (_index < 0 || _index >= this.elements.length) {
                return null;
            }
            return this.elements[_index];
        };
        //判断MAP中是否含有指定KEY的元素
        this.containsKey = function(_key) {
            var bln = false;
            try {
                for (i = 0; i < this.elements.length; i++) {
                    if (this.elements[i].key == _key) {
                        bln = true;
                    }
                }
            } catch (e) {
                bln = false;
            }
            return bln;
        };
        //判断MAP中是否含有指定VALUE的元素
        this.containsValue = function(_value) {
            var bln = false;
            try {
                for (i = 0; i < this.elements.length; i++) {
                    if (this.elements[i].value == _value) {
                        bln = true;
                    }
                }
            } catch (e) {
                bln = false;
            }
            return bln;
        };
        //获取MAP中所有VALUE的数组(ARRAY)
        this.values = function() {
            var arr = new Array();
            for (i = 0; i < this.elements.length; i++) {
                arr.push(this.elements[i].value);
            }
            return arr;
        };
        //获取MAP中所有KEY的数组(ARRAY)
        this.keys = function() {
            var arr = new Array();
            for (i = 0; i < this.elements.length; i++) {
                arr.push(this.elements[i].key);
            }
            return arr;
        };
    }

    复制代码代码如下:

    /**
     * js实现list
     * 
     */
    function List() {
        this.value = [];
        /* 添加 */
        this.add = function(obj) {
            return this.value.push(obj);
        };
        /* 大小 */
        this.size = function() {
            return this.value.length;
        };
        /* 返回指定索引的值 */
        this.get = function(index) {
            return this.value[index];
        };
        /* 删除指定索引的值 */
        this.remove = function(index) {
            this.value.splice(index,1);
            return this.value;
        };
        /* 删除全部值 */
        this.removeAll = function() {
            return this.value = [];
        };
        /* 是否包含某个对象 */
        this.constains = function(obj) {
            for ( var i in this.value) {
                if (obj == this.value[i]) {
                    return true;
                } else {
                    continue;
                }
            }
            return false;
        };

        /* 是否包含某个对象 */
        this.getAll = function() {
            var allInfos = '';
            for ( var i in this.value) {
                if(i != (value.length-1)){
                    allInfos += this.value[i]+",";
                }else{
                    allInfos += this.value[i];
                }
            }
            alert(allInfos);
            return allInfos += this.value[i]+",";;
        };

    }
  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/Bouger/p/4350587.html
Copyright © 2020-2023  润新知