JS的Map详细形式(十八)

简介: JS的Map详细形式(十八)

一. Map形式的定义


在JS处理数据的时候,常常要用到类似Java 的Map 形式,早期的时候是没有Map 的,目前版本是有Map 形式的。 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) {     
        this.elements.push( {     
            key : _key,     
            value : _value     
        });     
    }     
  //设置指定KEY的元素值VALUE,失败不执行 
  this.set = function(_key,_value) {   
    for(i = 0; i < this.elements.length; i++) {  
      if(this.elements[i].key == _key) {   
        this.elements[i].value = _value;
        return;
      }
    }  
  }
    //删除指定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) {     
        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;     
    }     
}


二. Map 的使用


二.一 初始化对象


var subjMap=new Map();


二.二 放置值 put(key,value) 方法


subjMap.put("101","map的形式");


二.三 取出值 get(key)方法


var name=subjMap.get("101");


二.四 判断是否为空 isEmpty() 方法


if(subjMap.isEmpty()){
  alert("没有数据");
}else{
  alert("有数据");
}


二.五 map的长度 size() 方法


alert("长度是:"+subjMap.size());


二.六 清空数据 clear()


subjMap.clear();


二.七 重新设置值 set(key,value) 方法


subjMap.set("101","重新设置值");


二.八 移除值 remove(key) 方法


subjMap.remove("101");


二.九 根据索引来取出值 element(key)


var obj=subjMap.element("101");


二.十 是否包含containsKey(key) 方法


if(subjMap.containsKey("101")){
  alert("包含该key值");
}


二.十一 包含值 containsValue(value) 方法


if(subjMap.containsValue("重新设置值")){
  alert("包含该value值");
}


二.十二 遍历所有keys()


var keyArr=subjMap.keys();


二.十三 遍历所有values()


var valueArr=subjMap.values();


三.常用技巧


  1. 设置值时用 put, 取出时用get
  2. 清空时,用.clear() 即可
  3. 判断是否为空时,可以用.size() 长度。


谢谢!!!

相关文章
|
1月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
36 3
|
6天前
|
存储 JavaScript 前端开发
JavaScript进阶-Map与Set集合
【6月更文挑战第20天】JavaScript的ES6引入了`Map`和`Set`,它们是高效处理集合数据的工具。`Map`允许任何类型的键,提供唯一键值对;`Set`存储唯一值。使用`Map`时,注意键可以非字符串,用`has`检查键存在。`Set`常用于数组去重,如`[...new Set(array)]`。了解它们的高级应用,如结构转换和高效查询,能提升代码质量。别忘了`WeakMap`用于弱引用键,防止内存泄漏。实践使用以加深理解。
|
9天前
|
JavaScript 前端开发
JavaScript 数组的函数 map/forEach/reduce/filter
JavaScript 数组的函数 map/forEach/reduce/filter
|
1月前
|
JavaScript 前端开发
JavaScript 的数组方法 map()、filter() 和 reduce() 提供了函数式编程处理元素的方式
【5月更文挑战第11天】JavaScript 的数组方法 map()、filter() 和 reduce() 提供了函数式编程处理元素的方式。map() 用于创建新数组,其中元素是原数组元素经过指定函数转换后的结果;filter() 则筛选出通过特定条件的元素生成新数组;reduce() 将数组元素累计为单一值。这三个方法使代码更简洁易读,例如:map() 可用于数组元素乘以 2,filter() 用于选取偶数,reduce() 计算数组元素之和。
20 2
|
1月前
|
前端开发 JavaScript 程序员
Javascript:forEach、map、filter、reduce、reduceRight
Javascript:forEach、map、filter、reduce、reduceRight
|
1月前
|
存储 缓存 JavaScript
JavaScript中的Set和Map:理解与使用
JavaScript中的Set和Map:理解与使用
|
1月前
|
JavaScript 前端开发
JavaScript中的map和foreach:理解与使用
JavaScript中的map和foreach:理解与使用
|
1月前
|
存储 JavaScript 前端开发
JavaScript高级主题:JavaScript 中的 Map 和 Set 是什么?它们有什么区别?
JavaScript的ES6引入了Map和Set数据结构。Map用于存储键值对,适合通过键进行查找,而Set则存储唯一值,无键且不支持键查找。两者在性能上表现出色,尤其在频繁的写入删除操作中。选择使用哪个取决于具体应用场景:键值对需求选Map,独特值集合则选Set。
26 2
|
1月前
|
JavaScript 安全 前端开发
js的map函数
js的map函数
11 0
|
1月前
|
JavaScript
js Array map映射对象多个属性
js Array map映射对象多个属性
14 0