首页 > 技术文章 > ES6 -- new Set()之去重,交集,并集等

chr506029589 2020-08-19 15:46 原文

首先,要记住的是:数据结构Set内成员的值都是唯一的,没有重复的值

Set对象常用的用法

 1.数组去重

var arr = [1,2,3,2,1,4];
[...new Set(arr)]   //结果为 [1, 2, 3, 4]
或者
Array.from(new Set(arr)); //结果为 [1, 2, 3, 4]

 小贴士: ES6内的方法Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组。所谓类数组对象,最基本的要求就是具有length属性的对象。

        2. 字符串重复字符去重

let a = 'abcdefabcdef';
[...new Set(a)].join('');  //"abcdef"
let a = '东方大道东方大道';
[...new Set(a)].join('');   //"东方大道"

         3. 两数组取并集

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}

         4. 两数组取交集

let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
 // 交集
let intersect = new Set([...a].filter(x => b.has(x)));  // set {2, 3}

        5.(a 相对于 b 的)差集

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

 

推荐阅读