zoukankan      html  css  js  c++  java
  • 自定义map对象,用于再不支持es6的map的时候

        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;
            }
        }

  • 相关阅读:
    HTML学习 day04
    HTML学习 day03
    HTML学习 day02
    原生Js监听普通dom尺寸变化
    JavaScript-获取地址栏参数
    Window 下 MySQL 环境的安装
    JavaScript 中的12种循环遍历方法
    前端PS常用切图技巧
    requirejs教程(一):基本用法
    seajs教程(一):基本用法
  • 原文地址:https://www.cnblogs.com/min-min-min/p/10059106.html
Copyright © 2011-2022 走看看