ES6新增的数据类型Map和Set。
Javascript的默认对象表示方式 {} ,即一组键值对。
但是Javascript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。
为了解决这个问题,最新的ES6规范引入了新的数据类型Map。
1.Map
ES6新增了Map数据结构,Map对象保存键值对,任何值(原始值或对象)都可以作为一个键或一个值。
Map是一组键值对,有key 也有value。
初始化Map需要一个二维数组,或者直接初始化一个空Map。 Map具有以下方法:
set ,添加key-value
has,判断是否存在key
get,获取对应key的值
delete, 删除对应的key以及value
var m = new Map(); //空Map
m.set('one', 10); //添加新的key-value
m.set('two', 20); var a = m.has('one'); //是否存在key 'one'
a; //true var b = m.get('two');
b; // m.delete('one'); //删除key 'one' m.get('one'); //undefined
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:
var m = new Map();
m.set('one', 10);
m.set('one', 20);
m.get('one'); //
如果key是一个对象。
let m = new Map();
let obj = {
name: 'one',
sex: '男'
};
let a = m.set(obj, 'myObj'); console.log(a); //Map { {name: 'one', sex: '男'} => 'myObj' }
2.Set
Set 和 Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set:
var s1 = new Set(); //空Set
var s2 = new Set([1,2,3]); //含1,2,3
重复元素在Set中自动被过滤:
var s = new Set([1,2,3,3,'3']);
s; // Set {1,2,3, "3"}
注意数字3和字符串'3'是不同的元素。
通过add() 方法可以添加元素到 Set中,乐意重复添加,但不会有效果:
s.add(4);
s; // Set {1,2,3, '3', 4}
s.add(4);
s; // 仍然是 Set {1,2,3, '3', 4}
通过delete() 方法可以删除元素:
s.delete(3);
console.log(s); // Set {1,2, '3'}
3.总结
Map和Set是ES6标准新增的数据类型。
兼容性:
IE8及以下版本不支持Map对象。
参考文档: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
ES6新增的数据类型Map和Set。的更多相关文章
- ES6深入浅出-10 ES6新增的数据类型-1.Symbol与隐藏属性
ES5现有的数据类型.7种数据类型. 新的类型是属于Object 最普通的类型.plain object 数组array 函数function 下面这些都属于Object类型. 今天要讲的 set类型 ...
- ES6 新增基本数据类型Symbol
ES6 增加了一个新的基本数据类型 symbol. 不过,和其他基本数据类型相比,它有点与众不同,因为它没有字面量的表现形式,而且创建的方式也有点奇怪,只能通过调用全局函数Symbol()来完成. l ...
- ES6深入浅出-10 ES6新增的数据类型-2.Set与数组去重
一种新的数据类型,它是对象的一种,Set,很像数组,又不是数组. Set 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refe ...
- ES6深入浅出-10 ES6新增的数据类型-3.其他类型
Map类型 Map 类型 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map Ma ...
- ES6 新的数据类型Map和Set
Map Map是一组键值对的结构,具有极快的查找速度. 举个例子,假设要根据同学的名字查找对应的成绩,如果用Array实现,需要两个Array: var names = ['Michael', 'Bo ...
- ES6新增特性
ES6: ECMA 第六次改版 块级作用域: 凡是被{ }包裹住的代码都是块级作用域,除了对象 特点:会造成一个暂时性死区 新增声明变量的两种方式: let: a. ...
- ES6新增的常用数组方法(forEach,map,filter,every,some)
ES6新增的常用数组方法 let arr = [1, 2, 3, 2, 1]; 一 forEach => 遍历数组 arr.forEach((v, i) => { console.log( ...
- 浅谈ES6新增数据类型:Symbol
面试中喜闻乐见的问题就是问我们的ES6新增了哪些个新特性 这篇文章一起学习一下新增的数据类型:Symbol JS的原始数据类型:6种Boolean,String,Undefined,NULL,Numb ...
- es6新增功能
声明命令 1. let命令 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效.下面代码在代码块之中,分别用let和var声明了两个变量.然 ...
随机推荐
- Error "java.lang.NoClassDefFoundError:org/openxmlformats/schemas/spreadsheetml/x2006/main/CTExtensionList" in SoapUI
After upgrade readyAPI 1.9 to the higher version, pop up error "java.lang.NoClassDefFoundError: ...
- jQuery的 ready() 和原生 Js onload() 的主要区别:
1. onload() 会等到DOM 元素和图片都加载完毕后才执行:raeady()会等到DOM元素加载完毕,但不会等到图片加载完毕就会执行. 2.onload() 如果编写了多个,则后面的会覆盖掉前 ...
- Qt笔记之Q_DECLARE_METATYPE(Type)
首先看一看QVariant这个类,我们可以把它当做一个万能数据类型,需要的时候能转换为一种特定的类型. 使用canConvert()函数检查是否能转换为你想要的数据类型,结构为:bool QVaria ...
- hadoop2.6.0高可靠及yarn 高可靠搭建
以前用hadoop2.2.0只搭建了hadoop的高可用,但在hadoop2.2.0中始终没有完成YARN HA的搭建,直接下载了hadoop最新稳定版本2.6.0完成了YARN HA及HADOOP ...
- pytest自动化6:pytest.mark.parametrize装饰器--测试用例参数化
前言:pytest.mark.parametrize装饰器可以实现测试用例参数化. parametrizing 1. 下面是一个简单是实例,检查一定的输入和期望输出测试功能的典型例子 2. 标记单 ...
- docker 容器跑一个应用
虽然是个前端,但是公司比较推崇docker,感觉挺神奇,就也学了一些,再此做个笔记,以供日后回想. 我的想法是在一个centos环境中运行一个nginx服务.docker的安装就不说了,网上已经有好多 ...
- python—文件创建
# 1.文件操作# day1.txt# 1.文件路径:E:\day1.txt# 2.编码方式:utf-8.gbk# 3.操作方式:只读,只写,追加,读写,写读# 以什么编码方式储存的方式储存就以什么编 ...
- nw 引用 sqlite
0.好吧,这对于我这个c 小白来说,真的有点难度. 1.安装Python 2.7.14 https://www.python.org/downloads/ 2.安装最新的nodejs+npm http ...
- Android测试中monkey的使用方法
1.直接使用adb命令 adb shell monkey -p 包名 <event-count> 例: 1)adb shell monkey -p 包名-s 500 --throttle ...
- 王者荣耀交流协会final发布-第3次scrum立会
1.例会照片 成员高远博,冉华,王磊,王玉玲,任思佳,袁玥出席.拍照的是王磊同学,王超同学因参加比赛不在学校,不能出席. master:任思佳 2.时间跨度 2017年12月3日 18:00 — 18 ...