南漂鱼
奋斗路上的南漂鱼
// 交集
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;
    }
  }
}
posted on 2022-02-21 16:16  南漂鱼  阅读(316)  评论(0)    收藏  举报