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 jQuery $.post $.ajax用法
Jul 09 Javascript
Prototype 学习 工具函数学习($A方法)
Jul 12 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
Dec 02 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
js实现弹窗暗层效果
Jan 16 Javascript
详解node child_process模块学习笔记
Jan 24 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
axios发送post请求,提交图片类型表单数据方法
Mar 16 Javascript
原生JS实现的碰撞检测功能示例
May 18 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
vue最简单的前后端交互示例详解
Oct 11 Javascript
angular 服务随记小结
May 06 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP 中常量的知识整理
2017/04/14 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
Python3中列表list合并的四种方法
2019/04/19 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
一套Java笔试题
2016/08/20 面试题
大学生职业生涯规划书模板
2014/01/03 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
家长对老师的感言
2014/03/11 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
保护地球的宣传语
2015/07/13 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
分析Python list操作为什么会错误
2021/11/17 Python
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技