Set了解一下

150 阅读2分钟

「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战」。

今天的主角是——Set(ES6提供的新的数据结构),它本身是一个构造函数,用来生成Set数据结构,那他有什么不同寻常之处呢?那就是Set里的成员的值都是唯一的。这时候,数组去重什么的,那不是小菜一碟咯~当然他的用处远远不止这些啦。

接下来,让我们来学习一下Set数据结构吧

首先我们要创建一个Set实例

const set1 = new Set() //通过new去创建

创建好实例,接下来就是运用它了。这里主要介绍一下方法:

1、add() 用来向一个 Set 对象的末尾添加一个指定的值

语法newSet.add(value);

例如:

const set1 = new Set()

set1.add(1);
set1.add(1); //会自动去重
set1.add(2);

for (const item of set1) {
  console.log(item);
  // 1
  // 2
}

2、clear() 用来清空一个 Set 对象中的所有元素。

语法newSet.clear(); //返回undefined

例如:

const set1 = new Set()

set1.add(1);
console.log(set1.clear()) //undefined

3、has() 返回一个布尔值来指示对应的值value是否存在Set对象中。

语法newSet.has(value); //返回布尔值,true为当前对象有value,false则表示无

例如:

const set1 = new Set()
set1.add(1);
set1.has(1);//true

4、delete() 可以从一个 Set 对象中删除指定的元素。

语法newSet.delete(value);

例如:

const set1 = new Set()
set1.add(1);
set1.has(1);//true

set1.delete(1);
set1.has(1);//false

5、values() 按照元素插入顺序返回一个具有 Set 对象每个元素值的全新 Iterator 对象。具体看例子吧!

语法newSet.values();

例如:

const set1 = new Set();
set1.add(1);
set1.add('two');
//接收返回值
const iterator1 = set1.values();
console.log(iterator1.next().value); //1
console.log(iterator1.next().value); //two


6、entries() 返回一个新的迭代器对象 ,这个对象的元素是类似 [value, value] 形式的数组,value 是集合对象中的每个元素,迭代器对象元素的顺序即集合对象中元素插入的顺序。

语法newSet.entries();

返回值:一个新的包含 [value, value] 形式的数组迭代器对象,value 是给定集合中的每个元素,迭代器 对象元素的顺序即集合对象中元素插入的顺序。

例如:

var set1 = new Set();
set1.add("a");
set1.add(1);
set1.add("b");
//接收返回值
var setIter = set1.entries();
console.log(setIter.next().value); // ["a", "a"]
console.log(setIter.next().value); // [1, 1]
console.log(setIter.next().value); // ["b", "b"]

Set实现并集、交集、差集:

let s1 = new Set([1, 2, 3])
let s2 = new Set([2, 3, 4])
//交集
let Intersect = new Set([...s1].filter(value => s2.has(value)))

//并集
let union = new Set([...s1, ...s2])

//差集
let difference = new Set([...s1].filter(value => !s2.has(value)))

以上就是本篇文章的全部内容啦,学习永无止境,大家都要加油!

参考文章: developer.mozilla.org/zh-CN/