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 document.images实例
May 27 Javascript
js形成页面的一种遮罩效果实例代码
Jan 04 Javascript
禁止页面刷新让F5快捷键及右键都无效
Jan 22 Javascript
js中函数声明与函数表达式
Jun 03 Javascript
Angular.js如何从PHP读取后台数据
Mar 24 Javascript
javascript常用经典算法详解
Jan 11 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
Js面试算法详解
Apr 08 Javascript
如何在vue里添加好看的lottie动画
Aug 02 Javascript
js笔试题-接收get请求参数
Jun 15 Javascript
微信小程序实现pdf、word等格式文件上传的方法
Sep 10 Javascript
jQuery实现简单评论功能
Aug 19 jQuery
利用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
thinkphp常见路径用法分析
2014/12/02 PHP
PHP pear安装配置教程
2016/05/14 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
浅析vue深复制
2018/01/29 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
理解Python中的类与实例
2015/04/27 Python
发布你的Python模块详解
2016/09/15 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
详解python中的 is 操作符
2017/12/26 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python的UTC时间转换讲解
2019/02/26 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
Python 定义只读属性的实现方式
2020/03/05 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
浅析Python __name__ 是什么
2020/07/07 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
护理学毕业生求职信
2013/11/14 职场文书
股权转让意向书
2014/04/01 职场文书
二手车转让协议书
2015/01/29 职场文书
保护动物的宣传语
2015/07/13 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书