日常学习笔记 - ES6中的Set类型

本文详细介绍了ES6中Set数据类型的基本概念、创建方法、属性和操作方法,包括add、delete、has以及clear等。此外,还阐述了Set的遍历方法如keys、values、entries以及forEach,并通过示例展示了如何将Set与数组相互转换。最后,给出了Set在数组去重和获取集合运算(交集、并集、差集)中的实际应用。
摘要由CSDN通过智能技术生成

一、理解

Set本质是ES6中新添加的一种数据类型,在结构上类似于数组,但set集合中的元素具有唯一性。


二、创建Set实例

ES6中内置了Set对象(构造函数),通过new字符进行实例化。

// 创建Set实例
let set1 = new Set();                           // {}
let set2 = new Set([1,2,{name:'杰克'}]);        // {1,2,{name:'杰克'}}

三、Set数据类型提供的属性和方法

1.size 查询该set实例的长度,类似数组的length

set1.size;                                      // 0
set2.size;                                      // 3
set2.length;                                    // undefined

2.操作方法

1) add(value) 向Set实例中添加值,返回实例本身。
let set = new Set();
set.add(['新增元素1']);                        // {'新增元素1'}
set.add([1,2,3]);                             // {'新增元素1',[1,2,3]}
set.add({name:'snow'});                       // {'新增元素1',[1,2,3],{name:'snow'}}

2) delete(value) 从Set实例中删除值,如果实例中存在该值,则删除该值,返回true,反之则返回false。
let set = new Set(['b','c']);				// {'b','c'}
set.delete('a');							// false
set.delete('b');							// true

3) has(value) 判断Set实例中是否存在该值,存在则返回true,不存在则返回false。
let set = new Set(['b','c']);				// {'b','c'}
set.has('a');								// false
set.has('b');								// true

4) clear() 清空Set实例的所有元素,无返回值
let set = new Set(['b','c']);				// {'b','c'}
set.clear();								// undefined
set;										// {}

3.遍历方法

1) keys() 返回键名
let set = new Set(['a','b','c']);			// {'a','b','c'}
set.keys();									// {'a','b','c'}
2) values() 返回键值
let set = new Set(['a','b','c']);			// {'a','b','c'}
set.values();								// {'a','b','c'}
3) entries() 返回键值对
let set = new Set(['a','b','c']);			// {'a','b','c'}
set.entries();								// {'a' => 'a', 'b' => 'b', 'c' => 'c'}
4) forEach 用法与普通数组完全相同
let set = new Set(['a','b','c']);
set.forEach((item,index)=>{
    console.log(item,index);				// aa bb cc 
})

1.由于Set数据类型的键名、键值完全相同,所以以上方法中keys和values的效果完全相同;同理forEach方法中的item和index也等同。
2.Set实例默认可以遍历,所以也可以直接使用for of遍历。


四、普通数组和Set实例的互相转换

1.数组转为Set实例

let arr = [1,2,3];
let set = new Set(arr);						// {1,2,3}

2.Set实例转为数组

let set = new Set([1,2,3]);					// {1,2,3}

// 方式一 扩展运算符
let arr = [...set];							// [1,2,3]

// 方式二 Array.from方法
let arr = Array.from(set);					// [1,2,3]

五、Set的应用示例

1.数组去重

let arr = [1,1,2,2,3,4,4];
let newArr = [...new Set(arr)]; 			// [1,2,3,4];

2.获取交集、并集、差集

let arr1 = [1,2,3];
let arr2 = [3,4,5];

// 交集
let newArr = [...new Set([...arr1,...arr2])];  	// [1,2,3,4,5]

// 并集
let set2 = new Set(arr2);
let newArr = [...new Set(arr1.filter(item => set2.has(item) )];  	// [3]

// 差集
let set2 = new Set(arr2);
let newArr = [...new Set(arr1.filter(item => !set2.has(item) )];   	// [1,2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值