实用主义:ES6数组求交并补集

前言

求交集并集不集基本也是属于面试题中的日常,ES5会利用数组的各种遍历方法,函数复杂,不容易理解。ES6中引入新的Set结构,使得这些求集合变得简单起来。

实现代码

let arrA = [1,2,3,3];
let arrB = [2,4,5,6];
let setA = new Set(arrA);
let setB = new Set(arrB);

//求并集
let unionSet = new Set([...setA, ...setB]);
console.log(Array.from(unionSet));

//求交集
let intersectionSet = new Set([...setA].filter(x => setB.has(x)));
console.log(Array.from(intersectionSet));

//求补集
let differenceSet = new Set([...setA].filter(x => !setB.has(x)));
console.log(Array.from(differenceSet));

打印结果

[ 1, 2, 3, 4, 5, 6 ]
[ 2 ]
[ 1, 3 ]

简单讲解

Set

ES6中引入的新结构,不允许有重复的值。通过new Set()生成,可以接收一个数组为参数。有add添加 delete删除 has判断是否拥有等方法

[...SetA]

解构方法,将一个具有Symbol.iterator接口(简单理解就是可以通过for of遍历的对象。这也是ES6的方法)的对象解构为数组

.filter

数组的遍历方法,返回一个方法内为true的数组值

x => setB.has(x)

箭头函数,等价于function(x) { return setB.has(X)};

Array.from()

ES6方法,将一个可遍历的对象生成为数组

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 1,687评论 0 8
  • 一、ES6简介 ​ 历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6(亦称 ...
    一岁一枯荣_阅读 6,258评论 8 25
  • 强大的for-of循环 ES6不会破坏你已经写好的JS代码。目前看来,成千上万的Web网站依赖for-in循环,其...
    Awe阅读 7,620评论 2 7
  • “通往财富自由之路”学习心得日志(20) 第廿十周 认知、选择、培养正确的刚需 如何认知,选择,培养正确的刚需? ...
    朱坤耀阅读 451评论 0 0
  • 今天的晨读感悟介绍了一种训练快速思维的方法:零秒思考法。其实质是利用A4纸随时随地记录问题、想法,训练思维能力。 ...
    牛奶布丁233阅读 637评论 8 9

友情链接更多精彩内容