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 客户端验证上传图片的大小(兼容IE和火狐)
Aug 15 Javascript
jQuery 学习第七课 扩展jQuery的功能 插件开发
May 17 Javascript
Android中的jQuery:AQuery简介
May 06 Javascript
js实现文字选中分享功能
Jan 25 Javascript
js正则表达式验证密码强度【推荐】
Mar 03 Javascript
js前端实现图片懒加载(lazyload)的两种方式
Apr 24 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
Aug 24 Javascript
基于vue-router 多级路由redirect 重定向的问题
Sep 03 Javascript
vue 优化CDN加速的方法示例
Sep 19 Javascript
JQuery中queue方法用法示例
Jan 31 jQuery
vue随机验证码组件的封装实现
Feb 19 Javascript
Node.js API详解之 console模块用法详解
May 12 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 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
PHP5 的对象赋值机制介绍
2011/08/02 PHP
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
文字幻灯片
2006/06/26 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
JS操作JSON要领详细总结
2013/08/25 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
python基于Selenium的web自动化框架
2019/07/14 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
优秀的计算机专业求职信范文
2013/12/27 职场文书
结婚典礼证婚词
2014/01/08 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
高一生物教学反思
2014/01/17 职场文书
安卓程序员求职信
2014/02/28 职场文书
学生个人自我鉴定
2014/03/26 职场文书
快餐公司创业计划书
2014/04/29 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
小学总务工作总结
2015/08/13 职场文书
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android