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]本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!