前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实用主义:ES6数组求交并补集

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

作者头像
MrTreasure
发布2018-05-10 11:08:22
8600
发布2018-05-10 11:08:22
举报
文章被收录于专栏:不止是前端不止是前端

前言

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

实现代码

代码语言:javascript
复制
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));

打印结果

代码语言:javascript
复制
[ 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方法,将一个可遍历的对象生成为数组

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.02.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 实现代码
  • 打印结果
  • 简单讲解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档