Js数组的并集,交集,差集的实现
并集、交集、差集的概念
并集:以属于A或属于B的元素为元素的集合成为A与B的并(集)
交集:以属于A且属于B的元素为元素的集合成为A与B的交(集)
差集:以属于A而不属于B的元素为元素的集合成为A与B的差(集)
ES6的实现
现在有两个数组 arr1 和 arr2
let arr1 = [1,2,3,4,4]
let arr2 = [3,4,5,6,7]1.数组的并集:
let union = new Set([...arr1,...arr2])2.数组的交集
let intersect = new Set([...arr1].filter(item => arr2.has(item)))3. 数组的差集
let difference = new Set([...arr1].filter(item => !arr2.has(item)))ES5的实现
交集
交集元素由既属于集合A又属于集合B的元素组成
Array.intersect = function(arr1, arr2) {
if(Object.prototype.toString.call(arr1) === "[object Array]" && Object.prototype.toString.call(arr2) === "[object Array]") {
return arr1.filter(function(v){
return arr2.indexOf(v)!==-1
})
}
}
// 使用方式
Array.intersect([1,2,3,4], [3,4,5,6]); // [3,4]并集
并集元素由集合A和集合B中所有元素去重组成
Array.union = function(arr1, arr2) {
if(Object.prototype.toString.call(arr1) === "[object Array]" && Object.prototype.toString.call(arr2) === "[object Array]") {
return arr1.concat(arr2).unique()
}
}
// 使用方式
Array.union([1,2,3,4], [1,3,4,5,6]); // [1,2,3,4,5,6]差集
A的差集:属于A集合不属于B集合的元素
B的差集:属于B集合不属于A集合的元素
Array.prototype.minus = function(arr) {
if(Object.prototype.toString.call(arr) === "[object Array]") {
var interArr = Array.intersect(this, arr);// 交集数组
return this.filter(function(v){
return interArr.indexOf(v) === -1
})
}
}
// 使用方式
var arr = [1,2,3,4];
arr.minus([2,4]); // [1,3]本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!