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

Posted chaoyuehedy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 js 2个数组取差集怎么取相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/jiechen/p/5694966.html

 

 

例如求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);

以上是关于关于 js 2个数组取差集怎么取的主要内容,如果未能解决你的问题,请参考以下文章

js数组并集,交集,差集

正则表达式入门字符组

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

两个list求差集

arcgis怎么求差集

ES6数组:两个数组或数组对象取并集、交集、差集