一、map,简单的键值对映射,具有很快的查找速度

1. 初始化map,map的键名可以使用其他数据类型,对象的属性名只能使用字符串或symbol

使用二维数组

var m = new Map([['name', 'LQW'], ['age', 23], [123, '我的键名是数字类型']]);
m.get('name'); // LQW

初始化一个空Map

var m = new Map();
m.set('name', 'LQW');
m.set('age', 23);
m.set(123, '我的键名是数字类型');
m.get(123); // 我的键名是数字类型

备注:由于一个key只能对应一个value,所以重复赋值后面的会覆盖前面的。

如果Map的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map将其视为一个键,包括0和-0。另外,虽然NaN不严格相等于自身,但Map将其视为同一个键。

2.map的方法

var m = new Map();

设置键值 m.set(key,value);

获取键值 m.get(key);

删除键值 m.delete(key);

移除所有的键值 m.clear();

获取键的个数 m.size;

判断键值是否存在 m.has(key);

获取所有的键名(Iterator对象:可以使用for..of进行迭代的对象)m.keys();

获取所有的键值(Iterator对象:可以使用for..of进行迭代的对象)m.values();

二、set,与map类似,也是一组key的集合,但是没有value,类似于数组,并且不能存储重复的key

1.初始化set

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

2. set方法

添加key  s.add(key);

删除key  s.delete(key);

判断键值是否存在 s.has(key);

移除所有的键值 s.clear();

ES6新数据类型map与set的更多相关文章

  1. ES6新数据类型Symbol

    Symbol 需计算字面量属性时使用 const benz = Symbol('benz'); const car = { [benz]: 'benz car' }; const info = Sym ...

  2. ES6新增的数据类型Map和Set。

    Javascript的默认对象表示方式 {} ,即一组键值对. 但是Javascript的对象有个小问题,就是键必须是字符串.但实际上Number或者其他数据类型作为键也是非常合理的. 为了解决这个问 ...

  3. 前端入门21-JavaScript的ES6新特性

    声明 本篇内容全部摘自阮一峰的:ECMAScript 6 入门 阮一峰的这本书,我个人觉得写得挺好的,不管是描述方面,还是例子,都讲得挺通俗易懂,每个新特性基本都还会跟 ES5 旧标准做比较,说明为什 ...

  4. ES6新语法

    ES6新语法概览 简介 ES6是JavaScript语言的新一代标准,加入了一些新的功能和语法,正式发布于2015年6月,亦称ES2015:该标准由ECMA(欧洲计算机制造联合会)的第39号技术专家委 ...

  5. 34.js----JS 开发者必须知道的十个 ES6 新特性

    JS 开发者必须知道的十个 ES6 新特性 这是为忙碌的开发者准备的ES6中最棒的十个特性(无特定顺序): 默认参数 模版表达式 多行字符串 拆包表达式 改进的对象表达式 箭头函数 =&> ...

  6. ES6中的Map集合(与java里类似)

    Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是 ...

  7. ES6新特性概览

    本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...

  8. Atitit js版本es5 es6新特性

    Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...

  9. ES6新特性简介

    ES6新特性简介 环境安装 npm install -g babel npm install -g babel-node //提供基于node的REPL环境 //创建 .babelrc 文件 {&qu ...

随机推荐

  1. Source Insight 入门设置

    在添加工程时,如果想添加文件夹下所有的文件,应该选择 “add tree” Source Insight 类名显示乱码解决 最近重新安装里source insight,但是打开文件后,类名显示乱码? ...

  2. 一个Java语言所写的shop网站框架明细

    核心框架Spring Framework :作为一个优秀的开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用 ...

  3. NET4.5中的Task.Run及Task.Delay方法

  4. Python-7-字典方法

    clear 删除所有字典项 >>> d = {} >>> d['name'] = 'Gumby' >>> d['age'] = 42 >&g ...

  5. [题解](组合数/二位前缀和)luogu_P2822组合数问题

    首先要知道C(n,m)=C(n-1,m)+C(n-1,m-1),这样显然是一个杨辉三角,这样大部分的问题就解决了, 那么判能否整除只需要杨辉三角对k取模即可, 而对于多组数据的k都是一样的,所以用前缀 ...

  6. mysql_innodb引擎

    innodb概括 1.Innodb是一种事务性存储引擎 2.完全支持事务的ACID特性 3.实现事务特性的原理: 使用Redo Log和Undo Log,Undo Log用于帮助未提交事务进行回滚,R ...

  7. 关于foreach的一个BUG

    foreach用起来比for更方便,但是foreach隐藏的操作,可能带来更多未知的BUG,今天就遇到一个问题.编程环境VS2010 //使用foreach遍历,其中未改变item的值,但是使用了匿名 ...

  8. 转 如何快速清理 chrom 缓存

    谷歌浏览器(Chrome)如何手动清除缓存 听语音 | 浏览:13267 | 更新:2014-05-15 01:00 | 标签:谷歌 chrome 浏览器的缓存可以帮助我们更好地使用一些程序,但时间长 ...

  9. GCC在windows下的配置

    http://blog.csdn.net/lan120576664/article/details/46806991 http://blog.csdn.net/shaynerain/article/d ...

  10. 05.Javascript——入门函数

    //定义函数的方法1 function abs(x) { if (x >= 0) { return x; } else { return -x; } } 上述abs()函数的定义如下: func ...