JS Map 和 List 的简单实现代码


Posted in Javascript onJuly 08, 2013
/*
 * 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]+",";;
    };
}

Javascript 相关文章推荐
js跟随滚动条滚动浮动代码
Dec 31 Javascript
基于jQuery架构javascript基础体系
Jan 01 Javascript
Javascript变量函数浅析
Sep 02 Javascript
如何判断鼠标是否在DIV的区域内
Nov 13 Javascript
JavaScript中提前声明变量或函数例子
Nov 12 Javascript
基于javascript制作微博发布栏效果
Apr 04 Javascript
深入理解JS正则表达式---分组
Jul 18 Javascript
深入浅析search 搜索框的写法
Aug 02 Javascript
js实现表单及时验证功能 用户信息立即验证
Sep 13 Javascript
通过函数作用域和块级作用域看javascript的作用域链
Aug 05 Javascript
Javascript读写cookie的实例源码
Mar 16 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
Nov 05 Javascript
利用JS实现浏览器的title闪烁
Jul 08 #Javascript
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 #Javascript
使用jquery实现简单的ajax
Jul 08 #Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 #Javascript
JavaScript 上万关键字瞬间匹配实现代码
Jul 07 #Javascript
20行代码实现的一个CSS覆盖率测试脚本
Jul 07 #Javascript
在JavaScript里嵌入大量字符串常量的实现方法
Jul 07 #Javascript
You might like
关于时间计算的结总
2006/12/06 PHP
测试php函数的方法
2013/11/13 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
PHP chr()函数讲解
2019/02/11 PHP
javascript 写类方式之四
2009/07/05 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
python简单实现获取当前时间
2016/08/27 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
Python实现的寻找前5个默尼森数算法示例
2018/03/25 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
演讲稿格式
2014/04/30 职场文书
无传销社区工作方案
2014/05/13 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
nginx搭建NFS网络文件系统
2022/04/14 Servers