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中中括号“[]”的多义性
Dec 03 Javascript
jQuery实现防止提交按钮被双击的方法
Mar 24 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
Mar 05 Javascript
浅谈js原生拖放
Nov 21 Javascript
浅谈$_FILES数组为空的原因
Feb 16 Javascript
用ES6写全屏滚动插件的示例代码
May 02 Javascript
浅谈微信页面入口文件被缓存解决方案
Sep 29 Javascript
ES6 迭代器与可迭代对象的实现
Feb 11 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
Feb 28 Javascript
JS如何把字符串转换成json
Feb 21 Javascript
js 将多个对象合并成一个对象 assign方法的实现
Sep 24 Javascript
antd配置config-overrides.js文件的操作
Oct 31 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
php格式文件打开的四种方法
2018/02/24 PHP
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
JavaScript运算符小结
2015/06/03 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
js实现点赞效果
2020/03/16 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
EJB实例的生命周期
2016/10/28 面试题
演讲稿格式范文
2014/05/19 职场文书
代办社保委托书范文
2014/10/06 职场文书