js 獲取兩個數組的交集,並集,補集,差集


https://blog.csdn.net/piaojiancong/article/details/98199541

ES5

const arr1 = [1,2,3,4,5],
arr2 = [5,6,7,8,9];

// 交集
let intersection = arr1.filter(function (val) { return arr2.indexOf(val) > -1 })

// 並集
let union = arr1.concat(arr2.filter(function (val) { return !(arr1.indexOf(val) > -1) }))

// 補集 兩個數組各自沒有的集合
let complement = arr1.filter(function (val) { return !(arr2.indexOf(val) > -1) })
.concat(arr2.filter(function (val) { return !(arr1.indexOf(val) > -1) }))

// 差集 數組arr1相對於arr2所沒有的
let diff = arr1.filter(function (val) { return arr2.indexOf(val) === -1 })

es6

const arr1 = [1,2,3,4,5],
arr2 = [5,6,7,8,9],
_arr1Set = new Set(arr1),
_arr2Set = new Set(arr2);


// 交集
let intersection = arr1.filter(item => _arr2Set.has(item))

// 並集
let union = Array.from(new Set([...arr1, ...arr2]))

// 補集 兩個數組各自沒有的集合
let complement = [...arr1.filter(item => !_arr2Set.has(item)), ...arr2.filter(item => !_arr1Set.has(item))]

// 差集 數組arr1相對於arr2所沒有的
let diff = arr1.filter(item => !_arr2Set.has(item))




免責聲明!

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



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