// 交集
let intersection = function(arr1, arr2){
let newArr = [];
for(let i=0; i<arr1.length; i++){
for(let j=0; j<arr2.length; j++){
if(arr1[i].id == arr2[j].id){
newArr.push(arr1[i], arr2[j]);
}
}
}
return newArr;
}
// 并集
// 默认type=0全部合并(完全合并)
// type=1保留第一个参数的数据合并
// type=2保留第二个参数的数据合并
let union = function(arr1, arr2, type=0){
let newArr = [];
switch(type){
case 0: {
newArr = [...arr1, ...arr2];
return newArr;
break;
}
case 1: {
let ids = []
for(let i=0; i<arr1.length; i++){
ids.push(arr1[i].id);
}
for(let i=0; i<arr2.length; i++){
if(!ids.includes(arr2[i].id)){
newArr.push(arr2[i]);
}
}
newArr = [...arr1, ...newArr];
return newArr;
break;
}
case 2: {
let ids = []
for(let i=0; i<arr2.length; i++){
ids.push(arr2[i].id);
}
for(let i=0; i<arr1.length; i++){
if(!ids.includes(arr1[i].id)){
newArr.push(arr1[i]);
}
}
newArr = [...arr2, ...newArr];
return newArr;
break;
}
}
}
// 差集
// 默认type=0对称差集(完全差集)
// type=1取第一个参数的数据差集
// type=2取第二个参数的数据差集
let differenceSet = function(arr1, arr2, type=0){
let newArr = [];
switch(type){
case 0: {
newArr = [...arr1, ...arr2];
newArr = newArr.filter((item, index, array)=>{
let num = -1;
for(let i=0; i<array.length; i++){
if(item.id == array[i].id){
num++;
}
}
if(num > 0){
return false;
}
else{
return true;
}
})
return newArr;
break;
}
case 1: {
let ids = [];
for(let i=0; i<arr2.length; i++){
ids.push(arr2[i].id);
}
for(let i=0; i<arr1.length; i++){
if(!ids.includes(arr1[i].id)){
newArr.push(arr1[i]);
}
}
return newArr;
break;
}
case 2: {
let ids = [];
for(let i=0; i<arr1.length; i++){
ids.push(arr1[i].id);
}
for(let i=0; i<arr2.length; i++){
if(!ids.includes(arr2[i].id)){
newArr.push(arr2[i]);
}
}
return newArr;
break;
}
}
}