一、集合Set
ES6 提供了新的数据结构Set(集合)。它类似数组,但成员的值都是唯一的,集合实现了iterator接口,所以可以使用
扩展运算符和for...of进行遍历
集合的属性和操作
- size 集合大小
- has 判断集合是否含有某个元素
- add 添加元素
- delete 删除某个元素
- clear 清空集合
- [...new Set(arr)] 对arr数组进行去重操作
let s2 = new Set(['tom', 'jerry','shuke','beita','jerry']);
console.log(s2) // 会自动去重
console.log(s2.size) // 5
// 添加
s2.add('红孩儿')
console.log(s2)
// 删除
s2.delete('shuke')
console.log(s2)
// 检测元素是否存在
const result = s2.has('beita')
console.log(result)
// 清空
let result2 = s2.clear()
console.log(s2)
let s3 = new Set(['tom', 'jerry','shuke','beita','jerry','哪吒']);
for(let item of s3){
console.log(item)
}
集合的实践
let arr = [1,2,3,4,5,6,2,3]
let arr2 = [4,5,6,5,6,7]
// 数组去重 放入Set,然后利用扩展运算符将Set转换为数组
let result = [...new Set(arr)]
console.log(result)
// 交集
let result2 = [...new Set(arr)].filter((item)=>{
return new Set(arr2).has(item)
})
console.log(result2)
// 并集
let union= [...arr,...arr2]
let s3 = new Set(union)
console.log([...s3])
// 差集
let diff = [...new Set(arr)].filter((item)=>{
return !(new Set(arr2).has(item))
})
console.log(diff)
二、Map
ES6 提供了新的数据结构Map。它类似于对象,也是键值对的集合,但“键”的范围不限于字符串,各种类型的值(包括对象)都可以当做键。Map也实现了iterator接口,所以可以使用
扩展运算符和for...of进行遍历。
Map的属性和方法:
- size 返回Map的元素个数
- set 增加一个新元素
- get 返回键名对象的键值
- has 监测Map中是否包含某个元素,返回boolean值
- clear 清空集合,返回undefined