第一种:如果不考虑IE8的兼容性完全可以使用Foreach ,此方法求出arr1 减去 arr2的差集,
arr1 = [1,2,3,4]arr2 = [1,2,3]
var subSet = function (arr1, arr2) {
var set2 = new Set(arr2)
var subset = []
arr1.forEach(function(val, index) {
if (!set2.has(val)) {
subset.push(val)
}
})
return subset
}
//结果等于4
第二种是使用JQuery 的merge和grep的配合使用求差集,兼容IE8 、chrome等主流游览器
var alpha = [1, 2, 3, 4],beta = [1,2,3]
$.arrayIntersect = function(a, b)
{
return $.merge($.grep(a, function(i)
{
return $.inArray(i, b) == -1
}) , $.grep(b, function(i)
{
return $.inArray(i, a) == -1
})
)
}
window.console && console.log( $.arrayIntersect(alpha, beta) )
//结果等于4
第三种使用ES6 的set 方法类似与foreach方法
var subSet = function(arr1, arr2) {var set1 = new Set(arr1)
var set2 = new Set(arr2)
var subset = []
for (let item of set1) {
if (!set2.has(item)) {
subset.push(item)
}
}
return subset
}
es6新的数据结构set集合 类似数组 但是成员值 都是唯一 他们之间也可以相互转换
去重
交集
has是set集合的方法
Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
差集
并集