对象数组去重的两种方式

1. 使用 filter 方法

   this.list.filter((item,index,self) => {

   return self.findIndex(el => el.id === item.id) === index

   })

   解释:数组高阶函数的三个参数,item:当前循环项 index: 当前索引 self : 数组本身

   1. 对需要去重的数组使用 filter 方法

   2. 在方法内部使用 self 参数调用 findIndex 方法

   3. 当内层循环项 el.id 与外层的当前循环项 item.id 相同时 返回内层循环项的 index

   4. 当内层循环项返回的 index 与外层当前循环项 item 的 index 相等时 说明内层循环找到的元素是第一次被匹配

   5. 此时外层 return 的值为 true 代表当前外层循环项的 item 被返回到新数组里

   6. 如果内层找到的 id 相等的元素的 index 与外层不一致 说明不是第一次被匹配 外层返回 false 舍弃当前元素

2. 使用 reduce 方法

   const obj = {}

   this.list = this.list.reduce((preValue,item) => {

   if(!obj[item.id]){

   obj[item.id] = true

   preValue.push(item)

   }

   return preValue

   },[])

   思路:

   1. 声明一个临时空对象用于判断是否已经访问过相同 id 的 item

   2. 如果obj[item.id]为假 说明是第一次访问 将当前 item push到preValue中去 并给obj[item.id] 赋一个值

   3. 将处理好的preValue返回 以供下一次的循环使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值