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 相关文章推荐
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
Mar 25 Javascript
与Math.pow 相反的函数使用介绍
Aug 04 Javascript
JS模拟键盘打字效果的方法
Aug 05 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
Sep 06 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
Apr 17 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
Sep 04 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
Jun 17 Javascript
JS实现元素上下左右移动效果
Oct 18 Javascript
js中对象与对象创建方法的各种方法
Feb 27 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
Jan 04 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安装攻略:常见问题解答(一)
2006/10/09 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
解决Django layui {{}}冲突的问题
2019/08/29 Python
Python中的延迟绑定原理详解
2019/10/11 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
基于opencv实现简单画板功能
2020/08/02 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
高中美术教学反思
2014/01/19 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
幼儿园评语大全
2014/04/17 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python