zoukankan      html  css  js  c++  java
  • js中完成对两个数组数据取差集

    方法一:

    1 例如求var arr1 = [1]; var arr2 = [1,2];的差集
    2 Array.prototype.diff = function(a) {
    3     return this.filter(function(i) {return a.indexOf(i) < 0;});
    4 };
    5  [1,2].diff([1]);//[2]

    方法二:

    例如求var arr1 = [1]; var arr2 = [1,2];的差集
    1 var isNaN = Number.isNaN;
    2 var difference = function(arr1, arr2) {
    3     return arr1.reduce(function(previous, i) {
    4         var found = arr2.findIndex(function(j) {
    5             return j === i || (isNaN(i) && isNaN(j));
    6         });
    7         return (found < 0 && previous.push(i), previous);
    8     }, []);
    9 };
    10 
    11 
    12 var arr1 = [1];
    13 var arr2 = [1, 2];
    14 
    15 console.log(difference(arr2, arr1)); //[ 2 ]

    方法三:

    1 // ES6 的 Set 来处理,这是真正按照数学上的集合来进行的,不会有重复元素
    2 var subSet = function(arr1, arr2) {
    3     var set1 = new Set(arr1);
    4     var set2 = new Set(arr2);
    5 
    6     var subset = [];
    7 
    8     for (let item of set1) {
    9         if (!set2.has(item)) {
    10             subset.push(item);
    11         }
    12     }
    13 
    14     return subset;
    15 };
    16 //普通方法
    17 var subSet = function(arr1, arr2) {
    18     var len = arr1.length;
    19     var arr = [];
    20 
    21     while (len--) {
    22         if (arr2.indexOf(arr1[len]) < 0) {
    23             arr.push(arr1[len]);
    24         }
    25     }
    26 
    27     return arr;
    28 };

    方法四:

    1 // 数组求差值
    2 var arr1 = [1, 2, 4, 9, 0];
    3 var arr2 = [2, 4, 7, 8];
    4 
    5 var difference = function(arr1, arr2) {
    6   var diff = [];
    7   var tmp = arr2;
    8 
    9   arr1.forEach(function(val1, i){
    10     if (arr2.indexOf(val1) < 0) {
    11       diff.push(val1);
    12     } else {
    13       tmp.splice(tmp.indexOf(val1), 1);
    14     }
    15   });
    16 
    17   console.log(diff.concat(tmp));
    18 }
    19 
    20 // 输出 [ 1, 9, 0, 7, 8 ]
    21 difference(arr1, arr2);

    原文引用自:https://www.cnblogs.com/jiechen/p/5694966.html

  • 相关阅读:
    django高级应用
    python第六章模块
    python第五章函数
    python第四章文件操作
    python第三章数据类型
    python第二章python入门
    python第一章计算机基础
    Python全栈day 05
    Python全栈day 04
    mysql 消息表分区方案
  • 原文地址:https://www.cnblogs.com/xiaoyue1606bj/p/11764634.html
Copyright © 2011-2022 走看看