let a = [1,2,3], b= [2, 4, 5];

1.差集

(a-b 差集:属于a但不属于b的集合)  a-b = [1,3]

(b-a 差集:属于b但不属于a的集合)  b-a = [4,5]

1) 第一种解决方案: filter+includes

let difference = a.concat(b).filter(v => !a.includes(v))
console.log(difference) //[4,5]

2) 第二种解决方案:Set+Array.from

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

Set本身是一个构造函数,用来生成Set数据结构。

Set类似于数组,区别在于它所有的成员都是唯一的,不会有重复的值。

Set是一个新的数据结构。

Array.from() 方法可以将 Set结构转为数组。

由于key不能重复,所以,在Set种,没有重复的key。要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set。

var s1 = new Set();  //空Set
var s2 = new Set([1,2,3]); //含1,2,3

重复元素在Set种自动被过滤:

var s = new Set([1,2,3,3,'3']);
s; // Set {1,2,3,"3"}

向Set加入值的时候,不会发生类型转换,所以3和'3'是不同的值。

注意数字3和字符串'3'是不同的元素。

new Set的作用是可以将传入的Array去重。

Array.from() 的作用是可以将 Set结构转为数组。

let aSet = new Set(a)
let bSet = new Set(b)
let difference = Array.from(new Set(a.concat(b).filter( v => !aSet.has(v) )))
console.log(difference) //[4,5]

3) 第三种解决方案:filter+indexOf


2.交集

1) 第一种解决方案:filter+includes

js求两个数组的交集|并集|差集|去重的更多相关文章

  1. java用最少循环求两个数组的交集、差集、并集

    import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...

  2. JS - 计算两个数组的交集、差集、并集、补集(多种实现方式)

    方法一:最普遍的做法 使用 ES5 语法来实现虽然会麻烦些,但兼容性最好,不用考虑浏览器 JavaScript 版本.也不用引入其他第三方库. 1,直接使用 filter.concat 来计算 var ...

  3. js求对象数组的交集/并集/差集/去重

    1.求交集 var arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}]; var arr1Id = [1,2,3] ...

  4. 【转】 js数组 Array 交集 并集 差集 去重

    原文:http://blog.csdn.net/ma_jiang/article/details/52672762 最劲项目需要用到js数组去重和交集的一些运算,我的数组元素个数可能到达1000以上, ...

  5. java使用bitmap求两个数组的交集

    一般来说int代表一个数字,但是如果利用每一个位 ,则可以表示32个数字 ,在数据量极大的情况下可以显著的减轻内存的负担.我们就以int为例构造一个bitmap,并使用其来解决一个简单的问题:求两个数 ...

  6. js取两个数组的交集|差集|并集|补集|去重示例代码

    http://www.jb51.net/article/40385.htm 代码如下: /** * each是一个集合迭代函数,它接受一个函数作为参数和一组可选的参数 * 这个迭代函数依次将集合的每一 ...

  7. js 获取两个数组的交集,并集,补集,差集

    https://blog.csdn.net/piaojiancong/article/details/98199541 ES5 const arr1 = [1,2,3,4,5], arr2 = [5, ...

  8. leetcode-350-Intersection of Two Arrays II(求两个数组的交集)

    题目描述: Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, ...

  9. (C#) 求两个数组的交集

    基本上在面试的时候,会具体到两个int数组,或string数组.具体也就是讨论算法. 首先需要的是和面试的人确认题目的含义,并非直接答题. 然后,可以提出自己的想法,首先最快的是用linq { Lis ...

随机推荐

  1. Centos7搭建docker仓库

    一:安装启动registry 1.1:环境准备 yum install -y python-devel libevent-devel python-pip gcc xz-devel pip insta ...

  2. BluePrism初尝2

    在接近三周的自学中,初步体验到了RPA的甜头. 在对BP这个工具慢慢的深入接触中,从0 到1的探索式学习,从最开始的一个个的小功能模块的用途,每一个的属性的功能,到现在自己能初步尝试组织一些简单的流程 ...

  3. jquery添加属性使用attr、prop。

    之前页面为标签添加属性都是使用的attr,删除使用removeAttr. 今天给checkbox添加checked属性时出现代码显示添加成功,但是页面不勾选内容. 后来查询发现checked是chec ...

  4. 第一周CTF (合天CTF)

    0X00 第一周 0x01 基础 50 . 下载下来发现是一个exe文件 ,尝试了一下没打开,然后把后缀名一个一个的试一试,改成txt用记事本打开,得到了一个“假冒的flag” *(别问我怎么知道的) ...

  5. Dangerous well

    Firsttime to develop games throuth Unity3d, such a great platform! You can build your games more qui ...

  6. Mysql 设置远程连接

    一.问题分析 有时候使用数据库远程连接工具连接MySQL的时候总是连接不上,确认过账号密码正确,端口telnet端口又是通的. Navicat Premium报错如下: 1130 - Host '19 ...

  7. Javascript 数组相关操作

    数组排序问题: sort() arr.sort() 可以直接进行排序,但是排序的方式是按unicode 顺序而来,比如1,1000,200,这个顺序不是我们想要的结果: 所以有了另一种方法,针对num ...

  8. mysql_pconnect 问题

    不同于mysql_connect的短连接,mysql_pconnect持久连接的时候,将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接 ...

  9. mysql 性能监控

    1.监控thread_cache命中率admin@localhost : (none) 07:51:20> show variables like '%thread%';+----------- ...

  10. asp.net,根据gridview 中checkbox复选框选中的行对数据库进行操作

    在asp.net中,使用checkbox,对gridview添加复选框. 多选数据行后,根据已选数据,对原数据进行多条语句查询. string sql = "Select * from 表 ...