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 相关文章推荐
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
Dec 23 Javascript
Javascript 两个窗体之间传值实现代码
Sep 25 Javascript
jquery 应用代码 方便的排序功能
Feb 06 Javascript
jquery miniui 教程 表格控件 合并单元格应用
Nov 25 Javascript
用js替换除数字与逗号以外的所有字符的代码
Jun 07 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
Jun 05 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
Feb 27 Javascript
React实现双向绑定示例代码
Sep 19 Javascript
静态页面实现 include 引入公用代码的示例
Sep 25 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
Feb 08 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 Javascript
在NPM发布自己造的轮子的方法步骤
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中去掉字符串首尾空格的方法
2012/05/19 PHP
php中的静态变量的基本用法
2014/03/20 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
python pandas修改列属性的方法详解
2018/06/09 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
CSS3实现时间轴效果
2016/07/11 HTML / CSS
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
校园标语大全
2014/06/19 职场文书
日语系毕业求职信
2014/07/27 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python