数组去重-去除引用类型-对象类型

55 篇文章 1 订阅
这篇博客介绍了多种在JavaScript中去除引用类型数组重复元素的方法,包括使用对象作为哈希表的技巧以及reduce方法的应用。示例代码展示了如何通过比较对象的特定属性实现去重,并在实际场景中应用到获取员工列表的函数中。此外,还提供了一个通用的数组去重函数,接受属性参数,适用于不同情况的去重需求。
摘要由CSDN通过智能技术生成

数组去重

去除引用类型

在这里插入代码片
var arr = [{
  "name": "ZYTX",
  "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4hewePU95UHtpMl3eE81uS74NC-6zu-Rtnw4Ix",
  "gender": "AAAAAA.doc"
}, {
  "name": "ZYTA",
  "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4hewePU95UHtpMl3eE81uS74NC-6zu-Rtnw4Ix",
  "gender": "BBBBBB.doc"
}, {
  "name": "ZDTX",
  "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4hewePU95UHtpMl3eE81uS74NC-6zu-Rtnw4Ix",
  "gender": "CCCCCC.doc"
}, {
  "name": "ZYTX",
  "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4hewePU95UHtpMl3eE81uS74NC-6zu-Rtnw4Ix",
  "gender": "AAAAAA.doc"
}];
var hash = {};
arr = arr.reduce(function(item, next) {
  hash[next.name] ? '' : hash[next.name] = true && item.push(next);
  return item
}, [])
console.log(arr,'arr');

示例
changeStaf(id,staffCode,canshu) {

      if(canshu != 'BJ') {
        this.form.staffCode = ''
        this.form.staffName = ''
      }
      this.RobitNameOptions = []
      let data = {
        page: 0,
        size: 9999,
        sort: 'desc,name',
        orgId: id
      }
      crudQywxRobotStaff.getStaffList(data).then((res) => {

        if (res) {
          let newBStaff = res
          // this.robotOptions = res.content
          var hash = {};
          newBStaff = newBStaff.reduce(function (item, next) {
            hash[next.id] ? '' : hash[next.id] = true && item.push(next);
            return item
          }, [])
          this.RobitNameOptions = newBStaff
          if(canshu ='BJ') {
            this.RobitNameOptions.filter((item) => {
              if(item.code == staffCode) {
              this.form.staffName = item.name
            }
            })

          }
          // console.log('各个部门员工',this.RobitNameOptions);
        }

      }).catch((err) => {

        // console.log(err);
      })
    },

方法二 reduce



元数组
var arrList = [

  {id: 1, value: "a"},

  {id: 2, value: "b"},

  {id: 3, value: "c"},

  {id: 4, value: "c"},

  {id: 5, value: "a"},

];

我们希望

var arrList = [

  {id: 1, value: "a"},

  {id: 2, value: "b"},

  {id: 3, value: "c"}

];

去重后

let obj = {};

arrList = arrList.reduce((cur,next) => {

  obj[next.value] ? "" : obj[next.value] = true && cur.push(next);

  return cur;

},[]);
 console.log(arrList);

方法三

/**
 * 对象数组去重
 * @param arr   入参数组
 * @param prop 去重属性
 * @returns {*}
 */
export function arrUnique(arr, prop) {
  if (!prop ||!arr.every(obj => obj.hasOwnProperty(prop))) {
    return [];
  }

  const map = new Map();
  return arr.filter(obj =>!map.has(obj[prop]) && map.set(obj[prop], 1));
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值