zoukankan      html  css  js  c++  java
  • ES6-11学习笔记--Set

    Set:一种新的数据结构
    常用方法
    遍历
    应用场景
    WeakSet
     
    常用方法:
    // Set的成员值一定是唯一的不重复的
    let s = new Set([1, 2, 3, 2])
    // 添加数据add
    s.add('a')
    // add可以链式操作
    s.add('b').add('c')
    // 删除数据delete
    s.delete('b')
    // 清除所有数据clear
    // s.clear()
    console.log(s);
    // has判断是否包含某项数据
    console.log(s.has('a')); // true
    // size输出包含多少项数据
    console.log(s.size);
    

      

    遍历Set:
    s.forEach(item => console.log(item))
    for (let item of s) {
        console.log(item);
    }
    // Set的key值和value值是一样的
    for (let item of s.keys()) {}
    for (let item of s.values()) {}
    for (let item of s.entries()) {
        console.log(item[0], item[1]);
    }
    

      

    应用场景
     
    数组去重
    let arr = [1, 2, 3, 4, 2, 3];
    let s1 = new Set(arr)
    console.log(s1);
    // Set转换成数组
    console.log([...s1]);
    console.log(Array.from(s1));
    

      

    数组合并去重,这里也能理解成并集
    let arr1 = [1, 2, 3, 4]
    let arr2 = [2, 3, 4, 5, 6]
    let s2 = new Set([...arr1, ...arr2])
    console.log(s2);
    

      

    交集
    let s3 = new Set(arr1)
    let s4 = new Set(arr2)
    let res = new Set(arr1.filter(item => s4.has(item)))
    console.log(res);
    

      

    差集:除去交集的元素
    let res2 = new Set(arr1.filter(item => !s4.has(item)))
    let res3 = new Set(arr2.filter(item => !s3.has(item)))
    console.log(res2);
    console.log(res3);
    console.log([...res2, ...res3]);
    

      

    WeakSet和Set类似,但是有以下区别。
    1、WeakSet的成员只能是对象,而不能是其他类型的值
    2、WeakSet中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用。所以WeakSet不能被循环遍历
    let ws = new WeakSet()
    const obj1 = {
        name: '张三'
    }
    const obj2 = {
        age: 18
    }
    ws.add(obj1)
    ws.add(obj2)
    // 删除的时候要是同一个内存地址的对象才可以正确删除
    ws.delete(obj1)
    console.log(ws);
    console.log(ws.has(obj2));
    

      

     
     
    放弃安逸,持续努力——成长
  • 相关阅读:
    20165227 结对编程项目-四则运算 第二周
    第八周学习总结
    20165227 结对编程项目-四则运算 第一周
    20165304第4次实验《Android程序设计》实验报告
    20165304《Java程序设计》第九周学习总结
    20165304实验三
    结对编程练习_四则运算(第二周)
    20165304 实验二 Java面向对象程序设计
    20165304 四则运算
    20165304《Java程序设计》第七周学习总结
  • 原文地址:https://www.cnblogs.com/MarsPGY/p/14828105.html
Copyright © 2011-2022 走看看