初始条件

    1. const arr1 = [1, 2, 3, 4, 5],
    2. arr2 = [2, 3, 4, 5, 6];

    交集:利用下标的方法去拿有相同的值

    1. let arr3 = [...arr1, ...arr2];
    2. let resultJiaoji = arr3.filter(function (item, index) {
    3. return arr3.indexOf(item) != index;
    4. });
    5. //原理:从左到右,每个值都有一个下标,但是利用item去查下标。出现相同值后,下标会以第一次出现为准

    ·交集:如果 arr1 里面有的,arr2没有。利用下标去查,返回值就是-1。然后filter 的返回值为假,就不进入arr4

    1. let arr4 = arr1.filter(item => arr2.indexOf(item) != -1);
    2. // 上下方法一样
    3. let arr4 = arr1.filter(function (item) {
    4. return arr2.indexOf(item) != -1
    5. });
    6. console.log('交集', arr4);

    差集:利用并集 - 交集的方法得到差集 原理跟上面一样

    1. let arr5 = arr3.filter(function (item) {
    2. return !arr4.includes(item);
    3. });

    差集:利用里面只有一个的情况,将里面的东西拿出来。

    1. let rest = arr3.filter(function (item) {
    2. return arr3.indexOf(item) == arr3.lastIndexOf(item);
    3. });

    注意:如果arr1 或 arr2 存在[1,2,2,3,4] 数组里面有相同的值,可以利用Set 或者之前讲过去重的方法,提前去掉重复的值。在进行运算。