MapSet是ES6标准新增的数据类型

Map: 是一组键值对的结构,使用一个二维数组来初始化Map,例如:

var m = new Map([['xiaohong',100],['xiaolan',99],['xiaoming',108]]);

或者直接初始化一个空Map:

var m = new Map();

m.set('xiaoli',98);

m.get('xiaoli'); // 98

m.delete('xiaoli');//删除xiaoli这个键值对

m.get('xiaoli'); // undefined

Map结构的key只能对应一个value,如果给一个key多次赋值,那么后面的值会覆盖前面的值。

m.set('xiaolan',88);

m.set('xiaolan',97);

m.get('xiaolan'); // 97

Set: 是一个一维数组初始化的结构,没有value值,只包含key值,例如:

var s = new Set([3,2,1]);

重复元素在Set中自动被过滤掉:

var s = new Set([1,3,5,6,6,'6']);

s; // Set(5) {1, 3, 5, 6, "6"} 整数6和字符串‘6’是不同的值

添加元素到Set中:

var s = new Set();

s.add(18);

s; // Set(1) {18}

Set通过delete(key)的方法删除元素:

s.delete(18);

Object和Map都是键值对,他们的区别是:

1.在Object对象中, 只能把String和Symbol作为key值, 但是在Map中,key值可以是任何基本类型

2.通过Map中的size属性, 可以很方便地获取到Map长度, 要获取Object的长度, 你只能用别的方法了

3.Map对象实例中数据的排序是根据用户push的顺序进行排序的, 而Object实例中key,value的顺序就是有些规律了, (他们会先排数字开头的key值,然后才是字符串开头的key值);

4.Object对象有原型, 也就是说他有默认的key值在对象上面, 除非我们使用Object.create(null)创建一个没有原型的对象

关于 Array 和 Set, 区别就是 Set 不可以有重复元素, 而 Array 可以有

表示集合的数据结构:数组(Array),对象(Object),Map和Set的更多相关文章

  1. JavaScript 数组(Array)对象的方法

    JavaScript 数组(Array)对象的方法 concat() 描述:用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 原型:arrayObject.conc ...

  2. java中将数组、对象、Map、List转换成JSON数据

    如果要将数组.对象.Map.List转换成JSON数据,那我们需要一些jar包: json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar commons-logging.ja ...

  3. JavaScript 数组(Array)对象

    Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对象的语法: new Array(); new Array(size); new Array(element0, e ...

  4. js中数组Array对象的方法sort()的应用

    一. sort()方法的介绍 //给一组数据排序 var arrNum = [12,1,9,23,56,100,88,66]; console.log("排序前的数组:"+arrN ...

  5. 元组Tuple、数组Array、映射Map

    一.元组Tuple 元组Tuple是不同类型的值的聚集,元组的值将单个的值包含在圆括号中来构成,元组可以包含一个不同类型的元素 如 val riple = (100, "Scala" ...

  6. JS数组与对象的遍历方法大全

    本文简单解析各种数组和对象属性的遍历方法: 原生for循环.for-in及forEach ES6 for-of方法遍历类数组集合 Object.key()返回键名的集合 jQuery的$.each() ...

  7. JavaScript (JS)基础:DOM 浅析 (含数组Array、字符串String基本方法解析)

    ①文本对象document: 例如:document.getElementById()    只获取一个对象          document.getElementsByTagName()   获取 ...

  8. 再谈js对象数据结构底层实现原理-object array map set

    如果有java基础的同学,可以回顾下<再谈Java数据结构—分析底层实现与应用注意事项>:java把内存分两种:一种是栈内存,另一种是堆内存.基本类型(即int,short,long,by ...

  9. Array【数组】和Object【对象】的特性比较

    数组是JavaScript提供的一个内部对象,它是一个标准的集合,我们可以添加(push).删除(shift)里面元素,我们还可以通过for循环遍历里面的元素. 那么除了数组我们在JavaScript ...

随机推荐

  1. 关于父类私有属性在子类构造函数中super调用的解释

    package test; public class Car { private int carMoney; //汽车租金 private String carName; //汽车名字 private ...

  2. antd中form自定义rules

    1.使用getFieldDecorator <FormItem label="手机号" > {getFieldDecorator('phone', { initialV ...

  3. vim没有权限却可以强制保存时所引起的思考 ------ 文件夹权限对所属文件的权限影响

    最近在拿着Linux 鸟叔私房菜对着Linux 系统学习一下基本操作,虽然已经使用Linux系统已经好多年不过却一直没有系统的学习一下.在用vim 编辑一个文件的时候出现了一个很神奇的事情,明明该文件 ...

  4. .net中的Dictionary字典类的使用方法

    //定义字典 Dictionary<string, string> d = new Dictionary<string, string>(); //添加字典的元素 ; i &l ...

  5. test20181024 zi

    题意 分析 这种题一般是推公式,发现必须求得的量,然后定义函数记忆化. 然后那些函数里面又是递归处理,合并. 代码 为了不爆空间,用map存记忆化内容. #include<bits/stdc++ ...

  6. 优先队列底层实现是堆(heap)(操作系统进程调度)

    只有一个CPU的情况下,比如作业系统中的调度程序,当一个作业完成后,需要在所有等待调度的作业中选择一个优先级最高的作业来执行(删除),并且也可以添加一个新的作业到作业的优先队列中(插入). 插入操作 ...

  7. [CLPR]BP神经网络的C++实现

    文章翻译自: http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi ...

  8. mysql update 没有where 不能更新的安全保护设置

    http://www.cnblogs.com/wjoyxt/p/5620827.html    没有where 不能更新的安全保护设置 http://dev.yesky.com/429/3543292 ...

  9. 【白银组】codevs_1011 数的计算

    简单而言,就是递归的运用,注意使用全局变量统计cnt,并且注意递归的结束,中间生成的值无需进行输出. http://codevs.cn/problem/1011/ #include<iostre ...

  10. WCF 快速入门

    定义服务契约 构建HelloWCF应用的第一步是创建服务契约.契约式是表示消息应用外形的主要方式.对于外形,是指服务暴露的操作,使用的消息 schema和每个操作实现的消息交换模式(MEP).总之,契 ...