// ES6中集合名为Set
// Set操作
// 使用Set对象:new, add, delete, has, size
// 迭代Set:多种迭代方法,Set与Array互转,求交集/差集
const arr1 = [1,1,2,2]
const arr2 = [2,3]
// 去重
let myArr = [...new Set(arr1)] // [1,2]
// 判断元素是否在集合中
let mySet = new Set(arr1)
let isHas = mySet.has(1) // true
let isHas2 = mySet.has(3) // false
// 求交集
let mySet1 = new Set(arr1)
let mySet2 = new Set(arr2)
let mySet3 = new Set([...mySet1].filter(item => mySet2.has(item)))
// set集合转成数组
let intersection = [...mySet3] // [2]
let intersection2 = Array.from(mySet3) // [2]
// 求差集
let mySet4 = new Set([...mySet1].filter(item => !mySet2.has(item))) // arr2在arr1中没有的值
let difference = [...mySet4] // [1]
// 备注:[…arr] 和 Array.from(arr)是两种集合转成数组的方法
// 迭代
for(let item of mySet) console.log(item)
for(let item of mySet.keys()) console.log(item)
for(let item of mySet.values()) console.log(item)
for(let [key,value] of mySet.entries()) console.log(key,value) // 在set集合中key和value一样
// 数组转成set集合
let set = new Set([1,2,3,4])