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 相关文章推荐
鼠标图片振动代码
Jul 06 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
angularJS 如何读写缓冲的方法(推荐)
Aug 06 Javascript
React组件的三种写法总结
Jan 12 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
简单实现js鼠标跟随效果
Aug 02 Javascript
Angular.js中上传指令ng-upload的基本使用教程
Jul 30 Javascript
在 Node.js 中使用原生 ES 模块方法解析
Sep 19 Javascript
vue2.0与bootstrap3实现列表分页效果
Nov 28 Javascript
vue发送ajax请求详解
Oct 09 Javascript
vue组件之间数据传递的方法实例分析
Feb 12 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
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
jquery中对表单的基本操作代码
2010/07/29 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
python调用java的Webservice示例
2014/03/10 Python
Python生成随机验证码的两种方法
2015/12/22 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
python实现两张图片的像素融合
2019/02/23 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
企业厂长岗位职责
2013/12/17 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
初三学习计划书范文
2014/04/30 职场文书
党支部承诺书
2015/01/20 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书