• 前端基础之《ECMAScript 6(9)—集合介绍与API》


    一、Set集合

    1、ES6提供了新的数据结构Set(集合)

    它类似于数组,但成员的值都是唯一的,集合实现了Iterator接口,所以可以使用【扩展运算符...】展开和【for...of】进行遍历。
    Set本质上也是一个对象。

    2、集合的属性和方法

    (1)size:返回集合的元素个数
    (2)add:增加一个新元素,返回当前集合
    (3)delete:删除元素,返回boolean值
    (4)has:检测集合中是否包含某个元素,返回boolean值

    3、Set例子

    1. //声明一个Set
    2. let s = new Set();
    3. console.log(s, typeof s);
    4. //传入一个数组
    5. let s2 = new Set(['大事儿','小事儿','好事儿','坏事儿','小事儿']);
    6. console.log(s2);

    Set会自动去除重复的项。

    4、Set属性和方法例子

    1. //传入一个数组
    2. let s2 = new Set(['大事儿','小事儿','好事儿','坏事儿','小事儿']);
    3. console.log(s2);
    4. //元素个数
    5. console.log(s2.size);
    6. //添加新元素
    7. s2.add('喜事儿');
    8. console.log(s2);
    9. //删除元素
    10. s2.delete('坏事儿');
    11. console.log(s2);
    12. //检测
    13. console.log(s2.has('好事儿')); //有返回true,没有返回false
    14. //for...of遍历Set集合
    15. for(let v of s2){
    16. console.log(v);
    17. }
    18. //清空
    19. s2.clear();
    20. console.log(s2);

    二、Set实践

    1、数组去重

    先将数组变为Set集合,在用扩展运算符变为数组。

    2、交集

    先去重,在比对。

    3、并集

    两个直接合并,转换成Set去重,在转换成数组。

    4、差集

    差集是交集的取反。

    1. let arr = [1,2,3,4,5,4,3,2,1];
    2. //1. 数组去重
    3. let result = [...new Set(arr)]; //先将数组变为Set集合,在用扩展运算符变为数组
    4. console.log(result);
    5. //2. 交集
    6. let arr2 = [4,5,6,5,6];
    7. //arr去重
    8. let result2 = [...new Set(arr)].filter(item => {
    9. //把arr2也变成一个集合
    10. let s2 = new Set(arr2);
    11. if(s2.has(item)){
    12. return true;
    13. }else{
    14. return false;
    15. }
    16. });
    17. console.log(result2);
    18. //3. 并集
    19. let union = [...new Set([...arr, ...arr2])];
    20. console.log(union);
    21. //4. 差集
    22. let diff = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)));
    23. console.log(diff);

    三、Map集合

    1、ES6提供了Map数据结构

    它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当做键。Map也实现了Iterator接口,所以可以使用【扩展运算符】和【for...of】进行遍历。

    2、Map的属性和方法

    (1)size:返回Map的元素个数
    (2)set:增加一个新元素,返回当前Map
    (3)get:返回键名对象的键值
    (4)has:检测Map中是否包含某个元素,返回boolean值
    (5)clear:清空集合,返回undefined
    (6)delete:删除一个元素

    四、Map例子

    1、声明Map

    1. //声明Map
    2. let m = new Map();
    3. m.set('name','张三');
    4. m.set('say', function(){
    5. console.log("发言了!");
    6. })
    7. //声明一个对象
    8. let key = {
    9. school : 'xxx三中'
    10. }
    11. m.set(key, ['北京','上海','深圳']);
    12. //打印Map对象
    13. console.log(m);

    Map的键可以是字符串,方法,对象等。

    2、size

    1. //size
    2. console.log(m.size);

    3、delete

    1. //delete
    2. m.delete('name');
    3. console.log(m);

    4、get

    1. //get
    2. console.log(m.get('say'));

    5、遍历Map

    v的每个元素,是一个数组。数组第一个元素是键,第二个元素是值。

    1. //遍历
    2. for(let v of m){
    3. console.log(v);
    4. }

    五、小结

    Map是升级版的对象,原来对象key只能是字符串。现在Map可以把对象作为一个key。
     

  • 相关阅读:
    有关concat函数的进一步理解
    优化代码 —— 减少 if - else
    【无标题】
    论文笔记:DEPTS: Deep Expansion Learning for Periodic Time Series Forecasting
    ADB常用命令
    CS鱼饵制作
    Android学习笔记 69. 文本和滚动视图
    IK分词器实现原理剖析 —— 一个小问题引发的思考
    小程序根据经纬度导航
    STM32单片机的知识点总结
  • 原文地址:https://blog.csdn.net/csj50/article/details/127450060