python 和 JS 获取交集、 并集和差集
Python:由于经常需要对数组作操作,需要获取交集 并集和差集
1、交集 list(set(a).intersection(set(b))) 获取a和b中重叠的元素。
2、并集 list(set(a).union(set(b)))
3、获取差集 list(set(a).differenceset(b)) #a中有,b中没有
ES7 JS: 1 获取数组的并集
let union = a.concat(b.filter(v => !a.includes(v)) // [1,2,3,4,5] 将b不在a中的元素追加到a中
2 获取数据的交集
let intersection = a.filter(v => b.includes(v) // 返回的是一个数组
3 获取差集 在数组a中,但是不在数组b中的元素
let difference = a.concat(b).filter(v=>a.includes(v) && !b.includes(v))
4 在数组b中,但是不在数组a中的元素‘
let difference = b.concat(a).filter(v=>b.includes(v) && !a.includes(v)) //计算数组的差集
ES6
let a = [1, 2, 3]l
let b = [2, 4, 5]
let aSet = new Set(a)
let bSet = new Set(b)
并集 let union = Array.from(new Set(a.concat(b)))
交集 let intersection = Array.from(new Set(a.filter(v => bSet .has(v)))
差集 difference = Array.fron(new Set(a.concat(b)).filter(v => aSet.has(v) && !bSet.has(v) )
es5
var a = [1,2,3];
var b = [2,4,5];
// 并集
var union = a.concat(b.filter(function(v) {
return a.indexOf(v) === -1})) // [1,2,3,4,5]
// 交集
var intersection = a.filter(function(v){ return b.indexOf(v) > -1 }) // [2]
// 差集
var difference = a.filter(function(v){ return b.indexOf(v) === -1 })// [1,3]
console.log(union)
console.log(intersection)
console.log(difference)