JS陣列操作 去重,交集,並集,差集

2021-09-19 21:41:30 字數 2084 閱讀 6256

原文:

js陣列操作:去重,交集,並集,差集

方法一:

function unique(arr) 

方法二:

function unique(arr) 

方法三:

function unique(arr) 

a = [1, 2, 3]

b = [2, 4, 5]

方法一:

es7新增了乙個array.prototype.includes的陣列方法,用於返回乙個陣列是否包含指定元素,結合filter方法

//

並集let union = a.concat(b.filter(v => !a.includes(v))) //

[1,2,3,4,5]

//交集

let intersection = a.filter(v => b.includes(v)) //

[2]//

差集let difference = a.concat(b).filter(v => !a.includes(v) || !b.includes(v)) //

[1,3,4,5]

方法二:

es6中新增的乙個array.from方法,用於將類陣列物件和可遍歷物件轉化為陣列。只要類陣列有length長度,基本都可以轉化為陣列。結合set結構實現數學集求解。

let aset = new

set(a)

let bset = new

set(b)

//並集

let union = array.from(new set(a.concat(b))) //

[1,2,3,4,5]

//交集

let intersection = array.from(new set(a.filter(v => bset.has(v)))) //

[2]//

差集let difference = array.from(new set(a.concat(b).filter(v => !aset.has(v) || !bset.has(v)))) //

[1,3,4,5]

方法三:

es5可以利用filter和indexof進行數學集操作,但是,由於indexof方法中nan永遠返回-1,所以需要進行相容處理。

//

並集var union =a.concat(b.filter(function(v) )) //

[1,2,3,4,5]

//交集

var intersection = a.filter(function(v)) //

[2]//

差集var difference = a.filter(function(v)).concat(b.filter(function(v))) //

[1,3,4,5]

var ahasnan = a.some(function(v))

var bhasnan = b.some(function(v))

//並集

var union =a.concat(b.filter(function(v) )).concat(!ahasnan & bhasnan ? [nan] : ) //

[1,2,3,4,5]

//交集

var intersection = a.filter(function(v)).concat(ahasnan & bhasnan ? [nan] : ) //

[2]//

差集var difference = a.filter(function(v)).concat(b.filter(function(v))).concat(ahasnan ^ bhasnan ? [nan] : ) //

[1,3,4,5]

參考:

陣列去重 並集 交集 差集

一 去重 1 借助額外變數空間 es5 var arr 1,3,4,5,6,6,7,3,3,3 var newarr var obj function removeduplicates arr return newarr removeduplicates arr 1,3,4,5,6,7 2 不借助額...

js陣列交集 並集 差集

1.利用filter indexof var arr1 1,2,3,4,5,6,7,8,9,nan arr2 1,3,5,nan var intersection arr1.filter function val console.log intersection 1,3,5 但這種方法針對是valu...

js取陣列兩個陣列的交集 差集 並集 補集 去重

each是乙個集合迭代函式,它接受乙個函式作為引數和一組可選的引數 這個迭代函式依次將集合的每乙個元素和可選引數用函式進行計算,並將計算得的結果集返回 var b 1,2,3,4 each function x alert a alert b script param fn 進行迭代判定的函式 pa...