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 相关文章推荐
图片自动缩小的js代码,用以防止图片撑破页面
Mar 12 Javascript
javascript 图片上一张下一张链接效果代码
Mar 12 Javascript
JQuery中$.ajax()方法参数详解及应用
Dec 12 Javascript
javascript运行机制之this详细介绍
Feb 07 Javascript
jquery中EasyUI实现同步树
Mar 01 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
Jun 13 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
Dec 13 Javascript
vue-router命名路由和编程式路由传参讲解
Jan 19 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 Javascript
vant实现购物车功能
Jun 29 Javascript
js实现验证码功能
Jul 24 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 ftp文件上传函数(基础版)
2010/06/03 PHP
php 获取本地IP代码
2013/06/23 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
js中开关变量使用实例
2017/02/24 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
python获取mp3文件信息的方法
2015/06/15 Python
Python学习入门之区块链详解
2017/07/25 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
大四自我鉴定范文
2013/10/06 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
公司踏青活动方案
2014/08/16 职场文书
实习感想范文
2015/08/10 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js
Golang入门之计时器
2022/05/04 Golang