博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6中的set和map
阅读量:3964 次
发布时间:2019-05-24

本文共 2510 字,大约阅读时间需要 8 分钟。

了解ES6中的set和map

set方法

ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成Set数据结构。

利用Set创建一个数组对象:

var arr = [15, 16, 15, 50, 42, 50,16,42,68];        var set = new Set(arr);

当我们输出set实例对象时:

在这里插入图片描述
我们可以发现:Set对象出的新实例是没有重复的值的。

*注:Set创建时 传递的参数必须是可以进行遍历的 否则就会报错(typeError),数组 伪数组 作为参数 都可以遍历

当我们将伪数组作Set的参数时:

var div=document.getElementsByTagName("div")        var set = new Set(div);        console.log(set);

在这里插入图片描述

add

add:Set中用于向set数据结构最后一位添加数据的方法

例如:

let test = new Set();// 原型方法// add 添加一个数据到set数据结构中test.add(12);test.add(10);test.add(12);test.add(16);// 使用add添加数据  -0和+0 表示的是同一个值  并且NaN都相等test.add(-0);test.add(+0); // 无效test.add(NaN);test.add(NaN); // 无效console.log(test);

结果如图:

在这里插入图片描述
我们可以发现:Set结构不能添加重复的值,添加的-0和+0 表示的是同一个值 并且NaN都相等

has

has:判断set数据结构集合中是否存在该元素,返回值为布尔类型

let test = new Set();test.add(12);test.add(10);test.add(12);test.add(16);test.add(-0);test.add(+0); test.add(NaN);test.add(NaN); console.log(test.has(12));console.log(test.has(20));

结果如下:

在这里插入图片描述

delete

delete:删除某个数据 ,不传参或者传的参数为不存在的值 那么就不删除

let test = new Set();        test.add(12);        test.add(10);        test.add(12);        test.add(16);        // delete  删除匹配到的数据  返回的结果是是否删除成功  不传参 或者穿的参数为不存在的值 那么就不删除        console.log(test.delete(12));        console.log(test.delete());        console.log(test.delete(40));        console.log(test);

结果如图:

在这里插入图片描述

clear

clear:清空整个set集合里面的内容

let test = new Set();        test.add(12);        test.add(10);        test.add(16);        test.clear()        console.log(test);

结果如图:

在这里插入图片描述

MAP

JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。在键不为字符串时,就会将键自动转为字符串。例如:

var element = document.getElementById('myDiv');var data = {
};data[element] = 'metadata'console.log(data['[object HTMLDivElement]']) // "metadata"console.log(data);

结果如图:

在这里插入图片描述
上面代码原意是将一个DOM节点作为对象data的键,但是由于对象只接受字符串作为键名,所以element被自动转为字符串[object HTMLDivElement]。

ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

set

set (key, value) 设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键。

var m = new Map();var o = {
p: 'Hello World'};m.set(o, 'content')console.log(m);

结果如图:

在这里插入图片描述

get

!get(key) 读取key对应的键值,如果找不到key,返回undefined。

Map也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。
例如:

var map = new Map([  ['name', '张三'],  ['title', 'Author']]);map.get('name') // "张三"map.get('title') // "Author"

结果:

在这里插入图片描述

has

!has(key) 返回一个布尔值,表示某个键是否在当前 Map 对象之中。

var map = new Map([  ['name', '张三'],  ['title', 'Author']]);map.size // 2console.log(map.has('name'));  // trueconsole.log(map.has('title')); // true

结果如图:

在这里插入图片描述

以上就是ES6中的set和map数据结构的相关内容了,如果觉得有帮助的话记得点赞加关注哦

转载地址:http://pwezi.baihongyu.com/

你可能感兴趣的文章
编译与部署Eclipse+Tomcat+MySQL+Liferay4.1.2
查看>>
POJ3728,The merchant(倍增LCA+分治)
查看>>
2019 ICPC Malaysia National,E. Optimal Slots(01背包变形)
查看>>
洛谷P1638 逛画展(双向队列)
查看>>
POJ2892,Tunnel Warfare(线段树维护连续区间)
查看>>
POJ3468,A Simple Problem with Integers(线段树-区间查询-区间更新)
查看>>
杭电ACM——6463(思维)
查看>>
杭电ACM——2069,Coin Change(DP)
查看>>
杭电ACM——2110,Crisis of HDU(母函数)
查看>>
杭电AM——2152,Fruit(母函数)
查看>>
杭电ACM——2566,统计硬币(DP)
查看>>
堆栈(数据结构)
查看>>
队列(数据结构)
查看>>
Mule ESB-Content-Based Routing Tutorial(1)
查看>>
Mule ESB-Content-Based Routing Tutorial(2)
查看>>
Mule ESB-Content-Based Routing Tutorial(3)
查看>>
年末项目经验总结
查看>>
做事情要放下面子,拿起责任
查看>>
敏捷开发实践(1)-故事工作量估算导致的问题
查看>>
记一次解决jenkins持续构建,自动部署的问题
查看>>