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 相关文章推荐
为Extjs加加速(javascript加速)
Aug 19 Javascript
jquery插件 autoComboBox 下拉框
Dec 22 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
超赞的jQuery图片滑块动画特效代码汇总
Jan 25 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 Javascript
实例解析jQuery工具函数
Dec 01 Javascript
原生JS实现垂直手风琴效果
Feb 19 Javascript
Webpack执行命令参数详解
Jun 17 Javascript
vue-router中scrollBehavior的巧妙用法
Jul 09 Javascript
手写Spirit防抖函数underscore和节流函数lodash
Mar 22 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中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
JavaScript&quot;模拟事件&quot;的注意要点详解
2019/02/13 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python登陆asp网站页面的实现代码
2015/01/14 Python
python 换位密码算法的实例详解
2017/07/19 Python
浅谈Python NLP入门教程
2017/12/25 Python
python挖矿算力测试程序详解
2019/07/03 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
keras打印loss对权重的导数方式
2020/06/10 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
实习生辞职信范文
2015/03/02 职场文书
干部培训简讯
2015/07/20 职场文书