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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM