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) {
                if (this.containsKey(_key) == true) {
                    if (this.containsValue(_value)) {
                        if (this.remove(_key) == true) {
                            this.elements.push({
                                key: _key,
                                value: _value
                            });
                        }
                    } else {
                        this.elements.push({
                            key: _key,
                            value: _value
                        });
                    }
                } else {
                    this.elements.push({
                        key: _key,
                        value: _value
                    });
                }
            },
            // 向Map中增加元素(key, value)
            this.set = function(_key, _value) {
                if (this.containsKey(_key) == true) {
                    if (this.containsValue(_value)) {
                        if (this.remove(_key) == true) {
                            this.elements.push({
                                key: _key,
                                value: _value
                            });
                        }
                    } else {
                        this.elements.push({
                            key: _key,
                            value: _value
                        });
                    }
                } else {
                    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的元素,成功返回true,失败返回false
            this.delete = 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;
                }
            },
            // set指定key的元素值value
            this.setValue = function(_key, _value) {
                var bln = false;
                try {
                    for (i = 0; i < this.elements.length; i++) {
                        if (this.elements[i].key == _key) {
                            this.elements[i].value = _value;
                            return true;
                        }
                    }
                } catch (e) {
                    bln = false;
                }
                return bln;
            },
            // 获取指定索引的元素(使用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中是否含有指定key的元素
            this.has = 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中所有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;
            },
            // 获取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遍历数组
         * @param callback [function] 回调函数;
         * @param context [object] 上下文;
         */
        this.forEach = function forEach(callback, context) {
            context = context || window;
            //IE6-8下自己编写回调函数执行的逻辑
            var newAry = new Array();
            for (var i = 0; i < this.elements.length; i++) {
                if (typeof callback === 'function') {
                    var val = callback.call(context, this.elements[i].value, this.elements[i].key, this.elements);
                    newAry.push(this.elements[i].value);
                }
            }
            return newAry;
        }
    }

自定义map对象,用于再不支持es6的map的时候的更多相关文章

  1. 自定义实现JavaScript的Map对象,修改IE不兼容MAP()的问题

    由于IE8及以下版本不支持Map对象,本文为程序猿们提供了有效的解决方法. 本文重写了Map对象,实现了常用的set, get, put, clear, remove, delete, forEach ...

  2. 转!! Java中如何遍历Map对象的4种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  3. 【转】Java中如何遍历Map对象的4种方法

    原文网址:http://blog.csdn.net/tjcyjd/article/details/11111401 在Java中如何遍历Map对象 How to Iterate Over a Map ...

  4. java中遍历map对象的多种方法

    在Java中如何遍历Map对象   How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有ma ...

  5. (转)在Java中如何遍历Map对象

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  6. css字符串转换为类map对象及反转

    存储对象为啥是类map(即:{key:val,...}格式),因为Map对象的val为字符时,无法存储 '('.')' 左右括号,我也很无奈╮(╯▽╰)╭ 解析脚本: <!DOCTYPE htm ...

  7. (转载)Java中如何遍历Map对象的4种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  8. Map对象,Set对象使用(1)

    Map对象:包含所有类型.可以是对象,函数,或字符串等,本质上是键值对的集合 let m = new Map(); let keyarr = [1,23,"发广告"]; let k ...

  9. es6的Map()构造函数

    普通的object对象是键值对的集合,但对于它的键却有着严苛的要求,必须是字符串,这给我们平时带来很多的不方便 Map函数类似于对象,但它是一个更加完美的简直对集合,键可以是任意类型 set()方法可 ...

随机推荐

  1. 【leetcode刷题笔记】Letter Combinations of a Phone Number

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  2. 【三】MongoDB文档的CURD操作

    一.插入文档 使用insert方法插入文档到一个集合中,如果集合不存在创建集合,有以下几种方法: db.collection.insertOne({}):(v3.2 new)  #插入一个文档到集合中 ...

  3. 最短路N题Tram SPFA

     #include <algorithm>#include <queue>#include <cstdio>#include <cstdlib>#inc ...

  4. java深入探究01

    经过前面基础部门的学习,希望大家都把基础打闹再继续深入探究java应用层面的知识,以后的日子我会继续更新java进阶知识,深入探究实际工作中的java应用,说的不好的地方还请见谅,如果能提出你宝贵的建 ...

  5. 算法(Algorithms)第4版 练习 2.2.5

    top-down: M E R G E S O R T E X A M P L E M E R G E S O R T E X A M P L E E X A M P L E merge(input, ...

  6. JavaScript 练习,变量,数组,函数,对象, with for 语句

    JavaScript 基于对象 和 事件驱动!!! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  7. Oracle数据库定义语言(DDL)

    --使用Create遇见创建表 Create Table table_name ( column_name datatype [null|not null], column_name datatype ...

  8. BZOJ 4199 [Noi2015]品酒大会:后缀数组 + 并查集

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4199 题意: 给你一个长度为n的字符串s,和一个长为n的数组v. 对于每个整数r∈[0,n ...

  9. Bootstrap-other内置组件

    1.缩略图 缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底下(左侧或右侧)带有标题.描述等信息.Bootstrap框架将这一部独立成一个模块组件.并通过“thumbnail ...

  10. 51nod 1829(函数)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1829 本题目相当于: n个不同的小球,放入到m个可区分的盒子 ...