JavaScript学习笔记---Set

1. 简介

ECMAScript 6 新增的 Set 是一种新集合类型,为这门语言带来集合数据结构。Set 在很多方面都像是加强的 Map,这是因为它们的大多数 API 和行为都是共有的。

2. 基本 API

使用 new 关键字和 Set 构造函数可以创建一个空集合:

const m = new Set(); 
// 使用数组初始化集合
const s1 = new Set(["val1", "val2", "val3"]); 
alert(s1.size); // 3

初始化之后,可以使用 add() 增加值,使用 has() 查询,通过 size 取得元素数量,以及使用 delete()clear() 删除元素:

const s = new Set();  

alert(s.has("Matt"));    // false alert(s.size);           // 0 
s.add("Matt") 
 .add("Frisbie"); 
 
alert(s.has("Matt"));    // true 
alert(s.size);           // 2 

s.delete("Matt"); 

alert(s.has("Matt"));    // false 
alert(s.has("Frisbie")); // true 
alert(s.size);           // 1 

s.clear(); // 销毁集合实例中的所有值

alert(s.has("Matt"));    // false 
alert(s.has("Frisbie")); // false 
alert(s.size);           // 0 

add() 返回集合的实例,所以可以将多个添加操作连缀起来,包括初始化:

const s = new Set().add("val1");
s.add("val2")
.add("val3");
alert(s.size); // 3

Map 类似,Set 可以包含任何 JavaScript 数据类型作为值。

const s = new Set();
const functionVal = function() {};
const symbolVal = Symbol();
const objectVal = new Object();
s.add(functionVal);
s.add(symbolVal);
s.add(objectVal);
alert(s.has(functionVal)); // true
alert(s.has(symbolVal)); // true
alert(s.has(objectVal)); // true

与严格相等一样,用作值的对象和其他“集合”类型在自己的内容或属性被修改时也不会改变:

const s = new Set();
const objVal = {},
      arrVal = [];
s.add(objVal);
s.add(arrVal);
objVal.bar = "bar";
arrVal.push("bar");
alert(s.has(objVal)); // true
alert(s.has(arrVal)); // true

add()delete() 操作是幂等的。delete() 返回一个布尔值,表示集合中是否存在要删除的值:

const s = new Set();
s.add('foo');
alert(s.size); // 1
s.add('foo');
alert(s.size); // 1
// 集合里有这个值
alert(s.delete('foo')); // true
// 集合里没有这个值
alert(s.delete('foo')); // false

3. 顺序与迭代

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值