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 相关文章推荐
function, new function, new Function之间的区别
Mar 08 Javascript
一个可绑定数据源的jQuery数据表格插件
Jul 17 Javascript
网易JS面试题与Javascript词法作用域说明
Nov 09 Javascript
JS根据变量保存方法名并执行方法示例
Apr 04 Javascript
javascript监听鼠标滚轮事件浅析
Jun 05 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
JavaScript门面模式详解
Oct 19 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
Nov 22 Javascript
Vue多组件仓库开发与发布详解
Feb 28 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
Apr 28 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
Mar 09 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/09/05 PHP
PHP4之真OO
2006/10/09 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
js日期对象兼容性的处理方法
2014/01/28 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
Python深入学习之上下文管理器
2014/08/31 Python
用python实现面向对像的ASP程序实例
2014/11/10 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
Python subprocess模块详细解读
2018/01/29 Python
Python实现登陆文件验证方法
2018/10/06 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
python 实现二维列表转置
2019/12/02 Python
python 贪心算法的实现
2020/09/18 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
个人评语大全
2014/05/04 职场文书
公开承诺书格式
2014/05/21 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
教师自我剖析材料
2014/09/29 职场文书