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 相关文章推荐
javascript 写类方式之二
Jul 05 Javascript
JavaScript 学习笔记(七)字符串的连接
Dec 31 Javascript
js 实现日期灵活格式化的小例子
Jul 14 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 Javascript
javascript浏览器窗口之间传递数据的方法
Jan 20 Javascript
canvas学习之API整理笔记(一)
Dec 29 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
Dec 16 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
May 07 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
Nov 01 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
Nov 01 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 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连接MongoDB示例代码
2012/09/06 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
php文件上传类完整实例
2016/05/14 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
python实现linux下使用xcopy的方法
2015/06/28 Python
windows下ipython的安装与使用详解
2016/10/20 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
Python如何实现转换URL详解
2019/07/02 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
tensorflow的计算图总结
2020/01/12 Python
Python如何读取文件中图片格式
2020/01/13 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
python利用platform模块获取系统信息
2020/10/09 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
专科毕业生学习生活的自我评价
2013/10/26 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
学校教师培训工作总结
2015/10/14 职场文书
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL