「这是我参与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)))
以上就是本篇文章的全部内容啦,学习永无止境,大家都要加油!