首页 > 其他分享 >封装去重的方法

封装去重的方法

时间:2022-11-07 15:57:06浏览次数:51  
标签:return val 封装 filter let obj 方法 id

封装的方法

1.去除同一数组中对象属性相同的对象

 fn(array, key) {
      let seen = new Set();
      return array.filter((item) => {
        let k = key(item);
        return seen.has(k) ? false : seen.add(k);
      });
    },
const arr=[{id:1,n:'nice'},{id:1,n:'wow'}]
this.fn(arr,item=>item.id);
output:[{id:1,n:'nice'}]

2.往数组中添加对象,有就覆盖,没有就添加。

formateArrObjData(initialArr, obj, pro) {
      // 判定数据是否为数组
      if (!(initialArr instanceof Array)) {
        return "请传入正确格式的数组";
      }
      // 判定数据是否为对象
      if (!(obj instanceof Object)) {
        return "请传入正确格式的对象";
      }
      if (!pro) {
        return "请传入正确格式的属性名";
      }

      let index = initialArr.findIndex((val) => val[pro] === obj[pro]);
      // 如果有就替换  没有就添加
      let tempArr = initialArr;
      if (initialArr.findIndex((val) => val[pro] === obj[pro]) !== -1) {
        tempArr.splice(index, 1, obj);
      } else {
        tempArr.push(obj);
      }
      // console.log(obj, "obj");
      // console.log(tempArr, "tempArr");
      return tempArr;
    },

3.数组去重

(一个数组包含所有,一个数组包含部分,求不包含的部分)

  1. 方法 1(some+filter)
var Array1 = [1,2,3,4,5]
var Array2 = [1,2]
var Array3 = Array1.filter((item1)=>{
    return !Array2.some((item2)=>(item2 == item1))
})

console.log(Array3) [3,4,5]

函数封装
function filterArray(arr1, arr2) {
  return arr1.filter((v) =>  return ! arr2.some((val)=>(v == val))
},
  1. 方法 2(every+filter)
let arr1 = [
   {id:1,name'小明',age:18},
   {id:2,name'小猪',age:12},
   {id:3,name'小红',age:16},
   {id:4,name'小紫',age:22},
   {id:5,name'小绿',age:20},
 ]

 let arr2 =[
   {pid:2,sex:女},
   {pid:5,sex:男},
 ]

//函数封装
function deWeight(arr1, arr2) {
  return arr1.filter((v) => arr2.every((val) => val.id!= v.pid));
},

//调用
let majorList = this.deWeight(arr1,arr2)
console.log(majorList);

标签:return,val,封装,filter,let,obj,方法,id
From: https://www.cnblogs.com/hxy--Tina/p/16866222.html

相关文章