Set和Map数据结构

本文介绍了ES6中的Set和Map两种数据结构。Set不允许有重复成员,提供了add、delete、has和clear等操作方法以及keys、values、entries和forEach遍历方法。Map则允许各种类型的值作为键,提供了类似的操作方法和遍历方式,是更灵活的hash结构实现。
摘要由CSDN通过智能技术生成

在没有系统地学习ES6之前就对Set和Map带有疑问,现在终于得到了解答,所以赶紧整理一下。
**

Set数据结构

**
首先,Set和Map都是数据结构,Set类似于数组,但是它的成员都是唯一的,也就是没有重复的成员,这一点和数组不同。Set本身是一个数据结构,用来生成Set数据结构。

const oSet = new Set();

Set接受一个数组(或者具有interable遍历器接口的其他数据结构)作为参数,用来初始化。

const oSet = new Set([1,2,3,4,5]);
[...oSet]//[1, 2, 3, 4, 5]

Set结构有两个属性,4个操作方法和四个遍历方法。
属性:
Set.prototype.construuctor:构造函数,默认是Set函数。
Set.prototype.size:返回Set实例的成员总数。

const oSet = new Set([1,2,3,4,5]);
oSet.size;//5

操作方法:
add(value):添加某个值。
delete(value):删除某个值。返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示参数是否为Set的成员。
clear(value):清除所有成员,没有返回值。

oSet.add(6);//[1, 2, 3, 4, 5.6]
oSet.has(2);//true

遍历方法:
keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回键值对的遍历器。
forEach():使用回调函数遍历每个成员。

for(let num of oSet.entries()){
console.log(num);
}
  /*
  Array(2) [1, 1]
  Array(2) [2, 2]
  Array(2) [3, 3]
  Array(2) [4, 4]
  Array(2) [5, 5]
  */
oSet.forEach((value,key)=>console.log(value+':'+key));
    /*
    1:1
    2:2
    3:3
    4:4
    5:5
    */

由于Set结构没有键名只有键值,所以keys和values方法的行为完全一致。
**

Map数据结构

**
Map数据结构类似于对象,也是键值对的集合,但是它“键”的范围不限于字符串(对象的键只能为字符串),各种类型的值(包括对象)都可以当做键。是一种更完美的hash结构实现。
属性:
size属性

const oMap = new Map({['foo',true],['bar',false]});
oMap.size;//2

操作方法:
set(key,value);
get(key,value);
has(key);
delete(key);
clear();
遍历方法:
keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
forEach():使用回调函数遍历每个成员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值