ES6语法特性(三)Set集合 Map

ES6

Set(集合)

ES6提供了新的数据结构Set,类似于数组,但成员的值是唯一的。

集合实现了iterator接口,可以使用扩展运算符for of 进行遍历。
Set对象可以传入可迭代数据类型,传入数组可以实现去重
集合的属性、方法:
size 返回集合的元素个数
add 添加一个元素,返回当前集合
delete 删除元素,返回Boolen值
has 检测集合中是否包含某个元素,返回Boolen值

size
      console.log(s2.size); // 6
add
      s2.add(100);
      console.log(s2);

在这里插入图片描述

delete
	  // 删除不存在的元素
      s2.delete(99);
      console.log(s2);
      // 删除存在的元素
      s2.delete(1);
      console.log(s2);

在这里插入图片描述

has
      console.log(s2.has(99)); // false
      console.log(s2.has(100)); // true
clear 清空
      s2.clear();
      console.log(s2);

在这里插入图片描述

迭代
      for (let v of s2) {
        console.log(v);
      }

在这里插入图片描述

      console.log(...s2); // 2 3 4 34 32 100
Set应用
1、数组去重

Set对象可以传入可迭代数据类型,传入数组可以实现去重

      let s = new Set();
      let arr = [1, 2, 1, 2, 3, 4, 2, 2, 34, 2, 4, 2, 4, 32, 2];
      let s2 = new Set(arr);
      console.log(s, typeof s);
      console.log(s2);

在这里插入图片描述

2、交集
      let arr1 = [1, 1, 2, 1, 3, 4, 5, 6];
      let arr2 = [4, 5, 6, 7, 8, 7, 1, 5, 7];
      // let result = [...new Set(arr1)].filter(item => {
      //   let s2 = new Set(arr2);
      //   if (s2.has(item)) return true;
      //   else return false;
      // });
      let result = [...new Set(arr1)].filter(item => new Set(arr2).has(item));
      console.log(result);

在这里插入图片描述

3、并集
      let arr1 = [1, 1, 2, 1, 3, 4, 5, 6];
      let arr2 = [4, 5, 6, 7, 8, 7, 1, 5, 7];
      let nuino = new Set([...arr1, ...arr2]);
      console.log(nuino);

在这里插入图片描述

4、差集
      let arr1 = [1, 1, 2, 1, 3, 4, 5, 6];
      let arr2 = [4, 5, 6, 7, 8, 7, 1, 5, 7];
      // let result = [...new Set(arr1)].filter(item => {
      //   let s2 = new Set(arr2);
      //   if (s2.has(item)) return false;
      //   else return true;
      // });
      let result = [...new Set(arr1)].filter(item => !new Set(arr2).has(item));
      console.log(result);

在这里插入图片描述

Map

ES6提供了Map数据结构,类似于对象,也是键值对的集合。
但是键的范围不限于字符串,各种类型的值(包括对象)都可以当做键
Map实现了iterator接口,可以使用扩展运算符for of 进行遍历。
Map的属性、方法:
size 返回Map的元素个数
set 添加一个元素,返回当前Map
get 返回键名对象的键值
has 检测Map中是否包含某个元素,返回Boolen值
clear 清空Map,返回undefined

      let m = new Map();
size
      console.log(m.size); // 0
set
      m.set('name', 'wf');
      let key = {
        world: 'a,b,c'
      };
      m.set(key, [1, 2, 3]);
      console.log(m);

在这里插入图片描述

delete
      m.delete('name');
get
      m.get('name');
has
      console.log(m.has('name')); // true
      console.log(m.has('age')); // false
clear 清空
      m.clear();

迭代
      for (let v of m) {
        console.log(v);
      }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值