JavaScript中的键值对数组Map对象的使用总结

技术标签: JS  Map  javascript  

 1.介绍

定义
键/值对的集合。

语法
mapObj = new Map()

备注
集合中的键和值可以是任何类型。如果使用现有密钥向集合添加值,则新值会替换旧值。

属性
下表列出了 Map 对象的属性和描述。

构造函数
    指定创建映射的函数。
Prototype — 原型
    为映射返回对原型的引用。
size
    返回映射中的元素数。

方法
下表列出了 Map 对象的方法和描述。

clear
    从映射中移除所有元素。
delete
    从映射中移除指定的元素。
forEach
    对映射中的每个元素执行指定操作。
get
    返回映射中的指定元素。
has
    如果映射包含指定元素,则返回 true。
set
    添加一个新建元素到映射。
toString
    返回映射的字符串表示形式。
valueOf
    返回指定对象的原始值。

 


下面的示例演示如何将成员添加到 Map,然后检索它们。

var m = new Map();
m.set(1, "black");
m.set(2, "red");
m.set("colors", 2);
m.set({x:1}, 3);

m.forEach(function (item, key, mapObj) {
    document.write(item.toString() + "<br />");
});

document.write("<br />");
document.write(m.get(2));


参考:https://blog.csdn.net/greenlight_74110/article/details/77894997 
 

2. 创建

/*  
 * 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) {   
        varbln = 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;   
    }   
}   
 
  var map = new Map();  
   
  map.put("key1", "value1");  
  map.put("key2", "value2");  
  map.put("key3", "value3");  
 
  
  //var val = map.get("key1");
//	var val = map.containsKey("key1");
//	var val = map.element(2).value;
 
    var arr=map.keys();
	for(var i=0;i<arr.length;i++){
		alert(map.get(arr[i]));
	}
//  alert(val);

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/acoolgiser/article/details/83418698

智能推荐

linux 3.10内核 xfs的一次io异常导致的hung crash_weixin_34023863的博客-程序员宝宝

8556395.925003] XFS (sdi): xfs_log_force: error -5 returned.[8556407.425047] INFO: task umount:19286 blocked for more than 1200 seconds.----这个默认是120,该环境上是被人为设置1200[8556407.425653] "echo 0 &gt; /...

MS COCO数据集 、pycocotools工具包使用[email protected]的博客-程序员宝宝

https://blog.csdn.net/qq_37541097/article/details/113247318

几何图形、函数、映射、范数_weixin_30547797的博客-程序员宝宝

几何图形 -- 函数 -- 映射函数与几何图形之间具有对应关系,尤其是对于三维以下的空间,函数是几何图形的数学描述,几何图形是函数的高度形象化;但是当超过三维空间时,函数与几何图形就难以获得较好的想象,于是有了映射的概念,映射表达的就是一个集合通过某种关系转为另外一个集合;数学上一般先讲映射,再讲函数,因为函数是映射的一种特例;空间/向量/集合 --&gt;...

达观数据刘思乡:一文详解AlphaGo原理_AI界小学生的博客-程序员宝宝

摘要1、围棋是一个MDPs问题2、policy iteration如何求解MDPs问题?3、WHAT and WHY is MonteCarlo method?4、AlphaGo Zero的强化学习算法前言AlphaGo是GoogleDeepMind团队开发的一个基于深度神经网络的围棋人工智能程序,其一共经历了以下几次迭代[1]:马尔可夫决策过程一个马尔...

诺基亚5230通讯录导出_小月贺金山的博客-程序员宝宝

进入通讯录---进入选项---选择全部标记----复制至存储卡。然后在存储卡(SD卡之类的东西)里,有一个文件夹 xI:\Others\Contacts这里就是你的所有电话号码了。

BJ模拟 装饰地板【状压dp+特征多项式优化矩阵快速幂】_Neo__Z的博客-程序员宝宝

题目大意:给一个m∗nm∗nm*n的地板,有s1s1s1种1×21×21\times2的横地砖,s2s2s2种2×12×12\times 1的竖地砖,问有多少种铺满的方式,对998244353取模。 (m≤6,n≤102501,s1,s2≤1e9)(m≤6,n≤102501,s1,s2≤1e9)(m\le 6,n\le 10^{2501},s1,s2\le 1e9)解题思路:看到...

随便推点

python最新版本3.10特性大全_喜欢软测的小北葵的博客-程序员宝宝_python3.10特性

全文3000字,预计阅读时间20min,建议先赞后看!一.上下文管理器python3.10 中,with 支持使用外层圆括号来使用多个上下文管理器,可以连续多行地书写。这允许将过长的上下文管理器集能够以与之前 import 语句类似的方式格式化为多行的形式。例如,以下这些示例写法现在都是有效的:with (CtxManager() as example): passwith ( CtxManager1(), CtxManager2()):

android blockcanary 原理,blockcanary源码学习随笔_weixin_39788386的博客-程序员宝宝

blockcanary是什么?blockcanary是国内开发者MarkZhai开发的一套性能监控组件,它对主线程操作进行了完全透明的监控,并能输出有效的信息,帮助开发分析、定位到问题所在,迅速优化应用下图为官方原理介绍示例图:image.png简介特点非侵入式使用简单实时监控提供完善的堆栈及内存信息Android渲染机制Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染, 如果...

【Python-入门】Python字符串格式化format浅析_菜菜2022的博客-程序员宝宝

用法它通过{}和:来代替传统%方式1、使用位置参数要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表print("{} is a student who is {}".format("haha",18))print("{} is a student who is {}".format(18,"haha"))print("{1} is a student who is {0}".format(18,"hah

IDEA spring boot maven项目中对接swagger jar冲突解决思路_jzy3711的博客-程序员宝宝

最终的pom.xml&lt;dependency&gt; &lt;groupId&gt;io.springfox&lt;/groupId&gt; &lt;artifactId&gt;springfox-swagger2&lt;/artifactId&gt; &lt;version&gt;2.9.2&lt;/version&gt;&lt;/dependency&gt;&...

Cocoapods配置安装流程_敲代码的小强的博客-程序员宝宝_cocoapods安装

记录开发Flutter配置IOS环境。先安装Xcode开发工具,它将帮你安装好 Unix 环境需要的开发包。然后安装Homebrew安装CocoaPods需要Ruby环境,所以,首先要检查Ruby环境的版本!第一步:首先要检查Mac是否安装了rvm。打开终端,输入指令rvm -v如果显示 command not found。表示没有按照。然后进行第二步。如果安装了跳转到第三步开始。第二步:终端 输入 curl -L get.rvm.io | bash -s sta...