Set 和 Map 数据结构

Set

1.1基本用法

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

Set本身是一个构造函数,用来生成 Set 数据结构。set返回植是对象,所以一般会用 … 展开 再加上 [ ] 转成数组使用

去除数组重复成员的方法

	// 去除数组的重复成员
	[...new Set(array)]

去除字符串里面的重复字符

[...new Set('ababbc')].join('')
// "abc"

1.2遍历的应用

扩展运算符(…)内部使用for…of循环,所以也可以用于 Set 结构。

	let set = new Set(['red', 'green', 'blue']);
	let arr = [...set];  // ...set  =>   red  green  blue  加上中括号放入数组
	// ['red', 'green', 'blue']

扩展运算符和 Set 结构相结合,就可以去除数组的重复成员。

	let arr = [3, 5, 2, 2, 5, 5];
	let unique = [...new Set(arr)];
	// [3, 5, 2]

数组的map和filter方法也可以间接用于 Set 了。

	let set = new Set([1, 2, 3]);
	set = new Set([...set].map(x => x * 2));
	// 返回Set结构:{2, 4, 6}
	
	let set = new Set([1, 2, 3, 4, 5]);
	set = new Set([...set].filter(x => (x % 2) == 0));
	// 返回Set结构:{2, 4}

使用 Set 可以很容易地实现并集(Union)交集(Intersect)差集(Difference)

	let a = new Set([1, 2, 3]);
	let b = new Set([4, 3, 2]);
	
	// 并集
	let union = new Set([...a, ...b]);
	// Set {1, 2, 3, 4}
	
	// 交集
	//如果你需要一个返回值是数组 ,要先想到 filter方法
    //交集 是一个新数组
	let intersect = new Set([...a].filter(x => b.has(x)));
	// set {2, 3}
	let arr1 = [2, 2, 3, 4, 5, 7, 7];
    let arr2 = [2, 3, 4, 5, 7, 9];

    //如果你需要一个返回值是数组 ,要先想到 filter方法
    //交集 是一个新数组
    let newArr = [...new Set(arr1)].filter(function(item) {
        //arr2 去重
        let s2 = new Set(arr2);

        if (s2.has(item)) {
            return true;
        } else {
            return false;
        }

    })
    console.log(newArr); //   [2, 3, 4, 5, 7]
	
	// (a 相对于 b 的)差集
	let difference = new Set([...a].filter(x => !b.has(x)));
	// Set {1}	

来源于

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值