zoukankan      html  css  js  c++  java
  • 关于 js 2个数组取差集怎么取

    关于 js 2个数组取差集怎么取

    例如求var arr1 = [1]; var arr2 = [1,2];的差集
    方法一:

    1 Array.prototype.diff = function(a) {
    2     return this.filter(function(i) {return a.indexOf(i) < 0;});
    3 };
    4 [1,2].diff([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);
     
  • 相关阅读:
    julia文件合并排序.jl
    julia生成指定格式的字符串.jl
    Julia中文教程资源.txt
    python socket发送魔法包网络唤醒开机.py
    julia与python中的列表解析.jl
    python利用or在列表解析中调用多个函数.py
    Django Admin流程
    meeting
    会议
    数据库
  • 原文地址:https://www.cnblogs.com/jiechen/p/5694966.html
Copyright © 2011-2022 走看看