zoukankan      html  css  js  c++  java
  • js求两个数组的交集|并集|差集|去重

    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获取下拉框的值
    根据SNP的位置从基因组提取上下游序列
    PCA分析的疑问
    os删除文件或者文件夹
    python scipy包进行GO富集分析p值计算
    生物信息等级的划分
    docker笔记
    GATK4注意事项
    centos7修改yum源为阿里镜像
    idea如何通过数据库生成实体类
  • 原文地址:https://www.cnblogs.com/still1/p/10788201.html
Copyright © 2011-2022 走看看