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 表单验证方法(实用)
Apr 28 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
Oct 13 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
Jun 04 Javascript
js实现可得到不同颜色值的颜色选择器实例
Feb 28 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
May 12 Javascript
获取input标签的所有属性的方法
Jun 28 Javascript
js基本算法:冒泡排序,二分查找的简单实例
Oct 08 Javascript
jQuery实现ToolTip元素定位显示功能示例
Nov 23 Javascript
JavaScript实现前端实时搜索功能
Mar 26 Javascript
JS随机排序数组实现方法分析
Oct 11 Javascript
解决axios发送post请求返回400状态码的问题
Aug 11 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 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
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
react的hooks的用法详解
2020/10/12 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python学习必备知识汇总
2017/09/08 Python
python操作oracle的完整教程分享
2018/01/30 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
python:print格式化输出到文件的实例
2018/05/14 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
python读文件的步骤
2019/10/08 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
用Python实现职工信息管理系统
2020/12/30 Python
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
上班玩手机检讨书
2014/02/17 职场文书
保安部任务及岗位职责
2014/02/25 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
单位更名证明
2015/06/18 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书