let arr1 = [1, 2, 7, 3, 4, 6]
let arr2 = [1, 2, 3, 4, 5, 5, 6]
let s1 = new Set(arr1)
let s2 = new Set(arr2) // set数据结构可以去重复
let s3 = new Set([...arr1, ...arr2])
let arr4 = [...s3] // 合并且去掉重复的数组
let arr5 = Array.from(s3) // 合并且去掉重复的数组
console.log(arr5)
console.log(arr4)
console.log(s3)
console.log(s1.size) // set数据结构的长度
console.log(1111)
s1.clear()
console.log(s1)
console.log(s1.has(2)) // 查找是否有那个值
s1.add("5").delete(4)
console.log(arr1.sort())
console.log(s1)
s1.forEach(item => {
console.log(item)
})
// // for (let item of s1) {
// // console.log(item)
// // }
// // for (let item of s1.keys()){
// // console.log(item) //
// // }
// // for (let item of s1.values()){
// // console.log(item)
// // }
// // for (let item of s1.entries()){
// // console.log(item) // set 数据结构键值和值是一样
// // }
// // let arr3 = arr2.filter(item => {
// // return item%3 == 0
// // })
// console.log(arr3)
let result = new Set(arr1.filter(item => s2.has(item)))
console.log(result)
console.log(Array.from(result))
console.log(arr1 )
console.log(arr2)
let arr6 = new Set(arr1.filter(item => !s2.has(item)))
console.log(arr6)
let arr7 = new Set(arr2.filter(item => !s1.has(item)))
console.log(arr7)
console.log([...arr6, ...arr7])
let obj = {
name: "一起设计"
}
let ws = new WeakSet()
ws.add(obj)
ws.add({
age: 5
})
ws.delete(obj) //这个就可以删除
ws.delete({
age: 5 //这里就不能删除。因为对象存的的是地址。其实这是两个不同的地址空间
})
console.log(ws)
// ws.forEach(item => {
// console.log(item)
// }) //这个就不能遍历
//垃圾回收机制 GC +1 +1
// WeakSet 弱引用 这里面1、只能存对象;2、不能遍历,3、弱引用是他不会垃圾回收机制考虑;
一起设计吧