JS数组内含有对象去重方法!!

JS数组内含有对象去重方法!!

//  模拟假数据
  let testArr = [{
        id: 1,
        name: '张三'
      },
      {
        id: 2,
        name: '李四'
      },
      {
        id: 3,
        name: 'Tom'
      },
      {
        id: 4,
        name: 'Jerry'
      },
      {
        id: 5,
        name: '张三'
      },
      {
        id: 1,
        name: '张三'
      }
    ]
    /**
    *   @param { Array } arr  需要操作的数组
    *   @param { String } key  去重的目标属性
    */

   // 利用数组reduce方法比对每一项
   const removeRepeat = (arr, key) => {
      let obj = {}
      arr = arr.reduce((pre, next) => {
        obj[next[key]] ? '' : obj[next[key]] = true && pre.push(next)
        return pre
      }, [])
      return arr
    }
    //  根据name属性去重
     let nameArr = removeRepeat(testArr, 'name')
    console.log(nameArr);
    //  根据id属性去重
     let idArr = removeRepeat(testArr, 'id')
    console.log(idArr);

下面附上处理结果

1.根据name去重
在这里插入图片描述
2.根据id去重
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript中,如果要对数组中的元素对象进行去重,可以利用对象的某个属性作为去重依据,具体实现步骤如下: 1. 创建一个新数组用于存放去重后的元素对象。 2. 遍历原数组中的元素对象,将元素对象的某个属性值作为判断依据。 3. 利用indexOf()方法判断新数组中是否已存在该属性值,如果不存在,则将元素对象添加到新数组中。 4. 返回新的数组,即为去重后的元素对象数组。 下面是一个简单的代码示例: ``` let arr = [{ name: 'Tom', age: 18 }, { name: 'Jerry', age: 20 }, { name: 'Tom', age: 18 }]; function unique(arr, attr) { let newArr = []; let tempArr = []; for(let i=0; i<arr.length; i++) { let item = arr[i]; if(tempArr.indexOf(item[attr]) == -1) { tempArr.push(item[attr]); newArr.push(item); } } return newArr; } let uniqueArr = unique(arr, 'name'); console.log(uniqueArr); ``` 在上面的代码中,我们通过unique()函数对原数组arr进行去重操作。该函数接受两个参数,分别为要进行去重数组去重依据的属性名。我们创建了两个数组newArr和tempArr,分别用于存放去重后的元素对象去重依据。在遍历原数组arr的过程中,我们通过判断tempArr中是否已经存在该属性值来进行去重。最后返回去重后的元素对象数组uniqueArr,输出结果为: ``` [ { name: 'Tom', age: 18 }, { name: 'Jerry', age: 20 } ] ``` 可以看到,去重成功,重复的元素对象已被删除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值