首页>>新闻中心>>ES6学习方法

ES6 Set数据结构

来源: 本站    发布时间: 2021-02-27 23:11    阅读次数:

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、弱引用是他不会垃圾回收机制考虑;
一起设计吧
下一篇: ES6 map数据结构
BACK