zoukankan      html  css  js  c++  java
  • 解决IE11中不支持ES6Map对象的问题

    // 自定义map对象  解决ie11中不兼容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;
    }

    }
  • 相关阅读:
    G1(Garbage First)
    优化老年代参数的分析思路
    优化年轻代参数的分析思路
    频繁发生fullgc的原因和定位思路
    什么时候会触发老年代gc
    老年代回收器cms
    SQL的优化技巧
    常用前端性能优化
    刷新的方式
    遇到的一些坑
  • 原文地址:https://www.cnblogs.com/it-wwp/p/14756633.html
Copyright © 2011-2022 走看看